如何在 vim 中获取终端密钥代码



我有一个现有的.vimrc,它是在Macintosh计算机上创建的,其中包含如下映射:

"------------------------------------------------------------
" keyboard shortcuts
"------------------------------------------------------------
nmap <S-Tab> :wincmd W<CR>
nmap <S-q> :bp|bd #<CR>
nmap « :bp|bd #<CR>
nmap ¢ :sp<CR>
nmap ¶ :vsp|wincmd w<CR>
nmap :Q :qa<CR>
nmap :W :wqa<CR>
nmap ≠ :q<CR>
nmap ESC[1;9B 15j
nmap ESC[1;9A 15k
nmap ^? :w<CR>
nmap ø :edit
nmap ESC[1;5B 15j
nmap ESC[1;5A 15k
vmap ESC[1;5B 15j
vmap ESC[1;5A 15k
nmap ^ :edit
nmap ^] :wincmd w<CR>
nmap <F9> :w<CR>:Make<CR><CR>
imap <F9> <ESC>:w<CR>:Make<CR>
nmap <C-n> :cnext<CR>
nmap <C-p> :cprev<CR>
nmap <F5> :Grep
nmap @ g~w w
nmap <F10> :ConqueGdb
nmap ^A :sav %:h/filename
nmap ESC[1;2D :NERDTreeToggle<CR>
nmap ESC[1;2B :sp|wincmd w<CR>
nmap ESC[1;2C :vsp|wincmd w<CR>
nmap ESC[1;5D :q<CR>
nmap ESC[1;5F :BuffergatorToggle<CR>
nmap ESC[1;6D w
nmap ESC[1;6B b

现在我已经将这个.vimrc转移到一个新的 linux 计算机(基于 debian(,但一半的快捷方式不再有效。我想这是因为与 linux 计算机相比,mac 对某些击键的解释不同(两台计算机都有 vim v8.1(。

创建快捷方式时,我记得 vim 中有一个功能,当您按下按键时会打印出键代码,但是那是大约 10 年前的事了,我不记得了,我无法通过谷歌找到。
准确地说,它就像"在 vim 中按XYZ,然后按例如CTRL+S,然后 vim 将打印要在映射中使用的相应键代码"。

我现在该怎么做,以使这些快捷方式也可以在 Linux 上运行?

您正在寻找:help i_CTRL-V

对于特殊键,将插入终端代码。

例如,在我的 Gnome 终端中,按<C-V><Right>给出^[OC<C-V><F12>给出^[[24~

一般来说,你应该尽可能选择Vim的key-notation。如果您确实需要插入特定的转义码,并且需要使用单个~/.vimrc支持多个平台,则可以将映射定义包装在if has('mac')if $TERM ==# 'screen256-color'等条件下。

最新更新