我怎么才能看到vim认为我打的是什么键?

时间:2012-04-29 18:08:25

标签: vim

有没有办法获得 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认为我正在按什么,所以我可以相应地写出映射。

1 个答案:

答案 0 :(得分:6)

  1. i切换到插入模式。
  2. <C-v>
  3. <key>或combo。
  4. Vim打印您按下的键/组合的“原始”值。
  5. 此处(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>