如何在vim中禁用Esc和光标键

时间:2011-12-13 11:15:29

标签: vim

有一种观点认为,在vim中工作时,不应使用Esc键(改为使用ctrl + c),也不要在键盘上使用箭头键(使用h,j,k,l)。但是很难不使用这些键。我认为有一种方法可以在.vimrc中禁用这些键,所以除了使用ctrl + c和hjkl之外别无选择。

我搜索了一下,找到了link的解决方案。 所以我在.vimrc文件中插入了以下内容:

 inoremap  <Up>     <NOP>
 inoremap  <Down>   <NOP>
 inoremap  <Left>   <NOP>
 inoremap  <Right>  <NOP>
 inoremap  <Esc>    <NOP>
 noremap   <Up>     <NOP>
 noremap   <Down>   <NOP>
 noremap   <Left>   <NOP>
 noremap   <Right>  <NOP>
 noremap   <Esc>    <NOP>

但这不起作用。将此添加到我的.vimrc会破坏我的映射到 功能键。另一个问题是它不会阻止箭头键的功能,而是当我在正常模式下按下Down时,会执行多个动作 - 光标向上移动一行,创建新行并插入字符“B”。 p>

如何在vim 7.2中禁用光标键和Esc键而不破坏其他任何内容?

3 个答案:

答案 0 :(得分:17)

如果您在终端中使用vim,则绝对不能重新映射Escape。由于在vim中处理密钥的方式(通常可能是终端),重新映射它会破坏你不想改变的各种密钥。要了解我的意思,请执行以下操作。

  1. 打开没有启动文件的vim:vim -u NONE --noplugin -N
  2. 进入插入模式。
  3. Ctrl-v,然后按任意功能键,例如<F2>
  4. 注意输入的序列。它很可能以^[开头,这是一个文字Escape

    现在打开尝试以下内容:

    1. :inoremap <esc> NO ESCAPE FOR YOU
    2. 进入插入模式。
    3. 按任意功能键,例如<F2>
    4. 如果前面的序列显示转义字符作为<F2>键按下的一部分,您现在将看到我们的新字符串打印到屏幕上。实际上,现在您已经有了映射,请尝试使用光标键移动。你可能会注意到同样奇怪的行为。

      总之,不要重新映射逃避,我几乎保证你会有意想不到的后果。

答案 1 :(得分:7)

这是一种非常令人讨厌的方式来实现你想要的东西:将你的拇指大小的纸张弄皱并将它们粘在钥匙上。当你的手指试图触及它们时,你会撞到纸上。他们会成为一个很好的提醒。将它们粘贴在那里直到你不再撞到它们。

答案 2 :(得分:3)

你所接近的是:

inoremap <esc>   <NOP>
inoremap <Left>  <NOP>
inoremap <Right> <NOP>
inoremap <Up>    <NOP>
inoremap <Down>  <NOP>
nnoremap <Left>  <NOP>
nnoremap <Right> <NOP>
nnoremap <Up>    <NOP>
nnoremap <Down>  <NOP>

这条线给你带来了麻烦:

noremap <Esc> <NOP>
相关问题