有什么方法可以得到类似,xev,的模式,在该模式下,我可以按击键和组合键,而vim会打印出我认为要按的键或字符?
特定的相关问题:我有在MacVim和GVim中可用的键绑定(bind),但在终端vim中不起作用,我在屏幕上的SSH上使用Linux。我得出的结论是,原因是因为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认为要按的内容,以便可以相应地编写映射。
最佳答案
i
切换到插入模式。 <C-v>
。 <key>
或组合。 在此处(Ubuntu 11.04上的Gnome终端),键入
i<C-v>
,然后键入<Alt>
,然后键入,
将显示类似于^[,
的内容,表示“转义”。 Alt
key (我相信这是您想用于<Meta>
的 key )既未被识别为<Meta>
也未被识别为<Alt>
。直接的结论是CLI Vim不喜欢
<M->
(而且许多终端仿真器对它的处理也不是很好)。一些终端仿真器允许您将<Alt>
键映射到Meta
,但这并不是一个完美的跨平台解决方案(我在Mac OS X上经常使用<Alt>
输入特殊字符)。在这台机器上
nnoremap ^[, :split<CR> " ^[ is <C-v><Esc>
确实可以满足我的需求。
如果绝对要在GUI和CLI中继续使用
<M->
快捷方式,则需要维护两组单独的快捷方式。如果您的.vimrc
中有数十个自定义映射,它将很快变得有点难以管理。这就是为什么我认为您应该使用在任何地方都可以使用的映射,例如:
:nnoremap <leader>, :split<CR>
:nnoremap <leader>. :vsplit<CR>
:nnoremap <leader>/ :close<CR>
默认的
<leader>
key 为\
,但我将其设置为,
。请注意,您不需要使用
<leader>key
,只需映射,,
,,.
和,/
即可。参见
:help <leader>
。关于vim - 我怎么能看到vim认为我要敲的键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10374615/