有没有办法获得 xev 类似的模式,我可以点击键和键组合,vim会打印出它认为我按的键或字符?< / p>
具体相关问题:我的密钥绑定在MacVim和GVim中有效,但它们不能在终端-vim中工作,我在Linux上通过SSH在屏幕上使用它。我得出结论,原因是因为vim认为我所按的键与MacVim解释它们的方式不同。
在我的.vimrc中:
map <M-,> :split<CR> " Horizontal split
map <M-.> :vsplit<CR> " Vertical split
map <M-/> :close<CR>
在我的vim :map
中(MacVim显示相同):
¯ :close<CR><Space>
® :vsplit<CR> " Vertical split
¬ :split<CR> " Horizontal split
它适用于MacVim和GVim,但不适用于任何基于终端的vim。我在多个终端(OSX终端和Term2,KDE终端,Gnome终端等)尝试了这个。我也用其他修饰符和关键组合见证了这一点。似乎vim正在捕获击键,但它正在将它们解释为<M-,>
以外的其他东西。
我想知道vim认为我正在按什么,所以我可以相应地写出映射。
答案 0 :(得分:6)
i
切换到插入模式。<C-v>
。<key>
或combo。此处(Ubuntu 11.04上的Gnome终端),输入i<C-v>
,然后输入<Alt>
,然后输入,
,打印出类似^[,
的内容,即“Escape” 。 Alt
密钥(我认为您要用于<Meta>
的密钥)既不会被识别为<Meta>
也不会被识别为<Alt>
。
直接的结论是CLI Vim不喜欢<M->
(并且许多终端模拟器无论如何都不能很好地处理它)。某些终端模拟器允许您将<Alt>
键映射到Meta
,但它不是一个完美的跨平台解决方案(我在Mac OS X上使用<Alt>
来输入特殊字符。)< / p>
在这台机器上,
nnoremap ^[, :split<CR> " ^[ is <C-v><Esc>
完全符合我的想法。
如果您绝对想要在GUI和CLI中继续使用<M->
个快捷方式,则需要维护两组不同的快捷方式。如果您的.vimrc
中有几十个自定义映射,则很快就会变得难以管理。
这就是为什么我认为你应该使用像以下一样工作的映射:
:nnoremap <leader>, :split<CR>
:nnoremap <leader>. :vsplit<CR>
:nnoremap <leader>/ :close<CR>
默认<leader>
密钥为\
,但我已将其设为,
。
请注意,您无需使用<leader>key
,只需映射,,
,,.
和,/
也可以。
请参阅:help <leader>
。