光标键在vim中无法正常工作

时间:2014-12-20 05:23:26

标签: vim cursor cygwin key backspace

我打开终端并使用Vim打开一个新的或旧的程序,但在我点击 i 进入插入模式后,我的光标键和退格键功能不正常。退格键只是移动指针。光标键产生A和B,或者仅引起其他混乱。

这只是无处不在,只是做了疯狂的事情。有人知道什么是错的,或者我的终端是否只是在fritz?我尝试从我的计算机上完全删除Cygwin并重新安装它,但这并没有解决问题。

2 个答案:

答案 0 :(得分:1)

发生这种情况的原因很可能是终端如何处理某些密钥。

来自:h xterm-cursor-keys

                  *vt100-cursor-keys* *xterm-cursor-keys*
Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA,
<Esc>OB, etc.  Unfortunately these are valid commands in insert mode: Stop
insert, Open a new line above the new one, start inserting 'A', 'B', etc.

尝试在插入模式下键入CTRL-v然后<left>。我相信您已插入^[OD,这与<Esc>OD相同。简而言之,当我们按左键时,我们的终端会发送<Esc> + O + D,然后将其解释为<Left>

这个话题相当复杂,我自己并不完全明白。可能参与此情况的选项包括timeoutttimeoutEsc的映射等。稍微搜索也表明TERM的值有时会影响情况。

但是,查看similar question on Unix&Linux stack exchange并且您的报告Backspace不起作用,我怀疑您根本没有.vimrc(这不是坏事!),使您的vim vi兼容

我希望你尝试:

  • 打开vim,然后输入:set compatible?,然后输入。
    • 如果compatible显示在终端的底部,那么我的猜测是正确的,是的。
  • 键入:set nocompatible,然后按Enter键。进入插入模式,然后按光标键。

如果:set nocompatible有效,那么您应该创建vimrc文件(搜索相关信息,其中有很多信息)。您甚至不必在set nocompatible中写.vimrc,因为.vimrc会自动执行此操作。

编辑: 如果是这种情况,要查看的具体选项是esckeys。这在nocompatible时设置为关闭。它在帮助文件中的描述如下:

Function keys that start with an <Esc> are recognized in Insert
mode.  When this option is off, the cursor and function keys cannot be
used in Insert mode if they start with an <Esc>.  The advantage of
this is that the single <Esc> is recognized immediately, instead of
after one second.  

无论如何,我建议在不兼容模式下使用vim。

答案 1 :(得分:-1)

为了解决 Ubuntu 20.04 下的退格/删除和光标控制键问题,我在我的主目录中创建了一个 .vimrc 文件并将其放在一行中:

set nocompatible

到目前为止似乎有效。