Vim 绑定在 st 中不起作用

Vim 绑定在 st 中不起作用

在我的 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 个差异(计算修改的功能键)。

相关内容