【问题标题】:How do I disable the arrow keys in insert mode?如何在插入模式下禁用箭头键?
【发布时间】:2014-05-08 17:43:54
【问题描述】:

我的 .vimrc 中有以下几行,我认为这已经足够了:

nnoremap <left> <nop>
nnoremap <right> <nop>
nnoremap <up> <nop>
nnoremap <down> <nop>

inoremap <left> <nop>
inoremap <right> <nop>
inoremap <up> <nop>
inoremap <down> <nop>

方向键在正常模式下不执行任何操作(如预期),但在插入模式下继续起作用。我也试过imap,但也没有用。使用inoremap &lt;left&gt; 查询映射可确认绑定没有被其他内容覆盖。我不确定发生了什么事。

作为最后一个测试,我用vim -u NONE 启动了没有vimrc 的vim,然后只运行了映射。如果我现在进入插入模式并按下箭头键,它会在光标所在的新行上插入字母 A、B、C 或 D,这完全不是我所期望的。

【问题讨论】:

    标签: vim


    【解决方案1】:

    基于this page,您可以使用以下映射来实现。

     noremap  <Up> ""
     noremap! <Up> <Esc>
     noremap  <Down> ""
     noremap! <Down> <Esc>
     noremap  <Left> ""
     noremap! <Left> <Esc>
     noremap  <Right> ""
     noremap! <Right> <Esc>
    

    我对它们进行了测试并且它们有效,但我目前不明白为什么这种魔法有效。

    特别是,我不确定为什么需要映射两次,但它应该对解决您的问题有效。

    【讨论】:

    • 有几个:help map-modes:map:map! 变体都捆绑了几个;它们一起涵盖了所有模式。
    【解决方案2】:

    A B C D 的插入敲响了警钟。您似乎遇到了Fix broken arrow key navigation in insert modeFix arrow keys that display A B C D on remote shell 中描述的问题,并且可能已经实施了解决方法。

    这会干扰:imaps 到&lt;Nop&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多