我打开终端并使用Vim打开一个新的或旧的程序,但在我点击 i 进入插入模式后,我的光标键和退格键功能不正常。退格键只是移动指针。光标键产生A和B,或者仅引起其他混乱。
这只是无处不在,只是做了疯狂的事情。有人知道什么是错的,或者我的终端是否只是在fritz?我尝试从我的计算机上完全删除Cygwin并重新安装它,但这并没有解决问题。
答案 0 :(得分:1)
发生这种情况的原因很可能是终端如何处理某些密钥。
*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>
。
这个话题相当复杂,我自己并不完全明白。可能参与此情况的选项包括timeout
,ttimeout
,Esc
的映射等。稍微搜索也表明TERM
的值有时会影响情况。
但是,查看similar question on Unix&Linux stack exchange并且您的报告Backspace不起作用,我怀疑您根本没有.vimrc
(这不是坏事!),使您的vim vi兼容
我希望你尝试:
: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
到目前为止似乎有效。