在我的 vimrc 中,我设置了用于在 vim 中的拆分窗口中导航的键绑定。他们在 urxvt 工作得很好,但拒绝在 st 工作。
我的代码是
nnoremap <silent> <C-Up> :wincmd k<CR>
nnoremap <silent> <C-Down> :wincmd j<CR>
nnoremap <silent> <C-Left> :wincmd h<CR>
nnoremap <silent> <C-Right> :wincmd l<CR>
任何帮助,将不胜感激
答案1
两个终端仿真器为控制/箭头键发送不同的字符序列。如果你已经设置了TERM
正确的话,大多数应用程序都可以工作。
假设他们正在使用终端数据库。
作为参考,两个终端将使用进行比较
infocmp -x urxvt st |grep 'k[[:upper:]].*5:'
或(取决于包装商的偏好)
infocmp -x rxvt-unicode st |grep 'k[[:upper:]].*5:'
像这样的东西:
kDC5: '\E[3\^', NULL.
kDN5: '\EOb', '\E[1;5B'.
kEND5: '\E[8\^', NULL.
kHOM5: '\E[7\^', NULL.
kIC5: '\E[2\^', NULL.
kLFT5: '\EOd', '\E[1;5D'.
kNXT5: '\E[6\^', '\E[6;5~'.
kPRV5: '\E[5\^', '\E[5;5~'.
kRIT5: '\EOc', '\E[1;5C'.
kUP5: '\EOa', '\E[1;5A'.
控制/箭头键是kDN5
(向下),kLFT5
(左边),kRIT5
(右)和kUP5
(向上)。
有趣的是,维姆不使用此信息术语信息。它仅使用术语帽接口(仅使用 2 个字符的名称:这些不是 2 个字符)。在您的配置中的某个地方,有一个解决方法,这可能会干扰解释 st 的不同字符序列。它可能会使用TERM
值,但只能以某种硬编码的、特定于应用程序的方式。
跟进评论,st-256color
副本xterm修改后的功能键(当然还有未修改的功能键)的行为,以及rxvt-unicode
用途接收值修改功能键的行为等。 infocmp 显示两组功能键之间有 138 个差异(计算修改的功能键)。