我正试图进入Vim。我在OS X的终端上运行它。
无论何时我点击删除键,它只是更改该字母的大小写而不是删除它。当我通过SSH连接到我的服务器并在那里使用Vim时,它会正常删除。
任何想法可能出错?
答案 0 :(得分:18)
问题
Del 键在GNU / Linux上的^[[3~
终端中生成代码urxvt
,并且可能在OS X终端中生成类似的代码。
我的理论是Vim由于某种原因无法识别删除键的任何键绑定,而只是尝试将字符串^[[3~
解释为输入。 ^[
是 Esc 键的键码(使您进入正常模式),~
是用于更改字母大小写的Vim命令(从正常模式)
您可以按 Ctrl + V Esc 和 Ctrl + 确认我提到的密钥代码V Del 来自Vim中的插入模式。 Ctrl + V 表示下一个字符应作为文本插入,而不是由编辑器解释。
解决方案
至于解决方案,请尝试编辑Vim配置文件(大概是~/.vimrc
):
vim ~/.vimrc
并将以下代码附加到其中:
nmap <Ctrl-V><Del> x
imap <Ctrl-V><Del> <Ctrl-V><Esc>lxi
我希望这会有所帮助:)
答案 1 :(得分:2)
问题是我的.vimrc中有
set term = ansi
接受了这一切,一切都很好 - 对不起烦恼,谢谢!
答案 2 :(得分:1)
好吧,这需要我永远解决。使用vim时,我在macOSx上的Iterm2中通过gnu屏幕访问Centos5系统。删除键不仅改变了字母大小写,并导致vim延迟,而且箭头键也无效。我认为问题仅在于Centos5机器上的旧配置,但可能与iterm或gnu屏幕有关,但我在任何Centos6系统上都没有这个问题。
什么不起作用: 我编译了vim 7.4,但是并没有解决它,所以不要沿着那条路走。 我还尝试了这些无效的配置
"set term=ansi
"set backspace=indent,eol,start
"set nocompatible
"fixdel
":if &term == "xterm"
":if &term == "xterm-256"
": set t_kD=^V<Delete>
":endif
"nmap <Ctrl-V><Del> x
"imap <Ctrl-V><Del> <Ctrl-V><Esc>xi
我终于找到了解决方案。
解决方案:在.vimrc中设置以下内容
set term-builtin_xterm
此外,您可能还会注意到在同一系统上存在256种颜色。因此,如果有帮助,您可以检查TERM环境变量echo $TERM
。如果它是xterm
,则可以将其切换为256色,例如export TERM='xterm-256color
使该相同系统的配色方案恢复正常。 reference
答案 3 :(得分:0)
我遇到了同样的问题,vim 突然以不同的方式解释了键。 我的答案是环境变量 $TERM 在我的终端中以某种方式“愚蠢”了。
我添加了
export TERM=xterm-color
到 ~/.bashrc (在我的情况下)并修复了所有与密钥有关的问题; DEL按预期工作等
我不需要在 ~/.vimrc 中添加或更改任何内容
我应该提到这对我来说不仅仅是 vim 的影响 - 例如,如果你还看到 'less' 的行为不同,你可能和我有同样的原因。
答案 4 :(得分:-1)
我经常在我的OSX机器上使用vim(vim版本7.2.108),我没有这个问题。尝试重命名你的vimrc文件,然后重新加载vim,看看问题是否仍然存在。如果在重命名vimrc文件后没有问题,那么您的问题就在该文件中。
在我的机器上,我的vimrc文件几乎是空的:
set ruler
set tabstop=2
set cindent
set number
syntax on
答案 5 :(得分:-1)
在我在vim fandom website上找到解决方案之前,这些解决方案都不适合我。
这些解决方案用于解决与箭头键类似的问题,除了删除键问题外,我还遇到过这种情况。
解决方案8为我修复了此问题,问题是我每次进入正常模式时都将<Esc>
映射到<Esc>l
以便向右移动光标,这显然导致使用包含^[
(这是转义码),其中包括箭头键(^[OA ^[OB
等)和删除键(^[[3~
),这些键可能会被误解。
从我的.vimrc中删除有问题的行即可解决此问题。