删除键正在更改Vim中的字母大小写

删除键正在更改Vim中的字母大小写,vim,Vim,我想进入维姆。我正在OSX的终端上运行它 每当我点击delete键时,它都会简单地更改该字母的大小写,而不是将其删除。当我SSH到我的服务器并在那里使用Vim时,它会正常删除 有什么问题吗?问题 Del键在GNU/Linux上的myurxvt终端中生成代码^[[3~,并且可能在您的OS X终端中生成类似的代码 我的理论是Vim出于某种原因不识别delete键的任何键绑定,只是尝试将字符串^[[3~解释为输入。^[/code>是Esc键的键码(将您置于正常模式),而~是用于更改字母大小写(从正常模

我想进入维姆。我正在OSX的终端上运行它

每当我点击delete键时,它都会简单地更改该字母的大小写,而不是将其删除。当我SSH到我的服务器并在那里使用Vim时,它会正常删除


有什么问题吗?

问题

Del键在GNU/Linux上的my
urxvt
终端中生成代码
^[[3~
,并且可能在您的OS X终端中生成类似的代码

我的理论是Vim出于某种原因不识别delete键的任何键绑定,只是尝试将字符串
^[[3~
解释为输入。
^[/code>是Esc键的键码(将您置于正常模式),而
~
是用于更改字母大小写(从正常模式)的Vim命令

您可以通过在Vim的插入模式下按Ctrl+V Esc和Ctrl+V Del来确认我提到的键代码。Ctrl+V意味着下一个字符应该作为文本插入,而不是由编辑器解释

解决方案

至于解决方案,请尝试编辑Vim配置文件(大概是
~/.vimrc
):

vim~/.vimrc

并向其附加以下代码:

nmap <Ctrl-V><Del> x
imap <Ctrl-V><Del> <Ctrl-V><Esc>lxi
nmap x
imap lxi

我希望这有帮助:)

我在我的OSX机器(vim版本7.2.108)上经常使用vim,我没有这个问题。尝试重命名vimrc文件,然后重新加载vim,看看问题是否仍然存在。如果重命名vimrc文件后没有问题,那么您的问题就在该文件中

在我的机器上,我的vimrc文件几乎是空的:

set ruler
set tabstop=2
set cindent
set number
syntax on

问题是在我的vimrc中

set term = ansi

把它拿出来,一切都很好-很抱歉出现了麻烦,谢谢!

好吧,这对我来说花了很长时间才解决。当使用vim时,我在macOSx上的Iterm2中通过gnu屏幕访问Centos5系统。不仅是删除键改变了字母大小写,导致了vim的延迟,而且箭头键也不起作用。我认为问题是simply在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

此外,您可能还注意到256色在同一系统上有问题。因此,如果有帮助,您可以检查您的TERM环境变量
echo$TERM
。如果它是
xterm
,您可以将其切换到256色,例如
export TERM='xterm-256color
,以使同一系统的配色方案回到正轨。

在我找到解决方案之前,所有这些解决方案都不适用于我

这些解决方案适用于类似的箭头键问题,除了删除键问题之外,我还遇到了箭头键问题

解决方案8为我解决了这个问题,问题是每次进入正常模式时我都将
重新映射到
l
,以便向右移动光标,显然这会导致包含
^[
(转义码)的任何其他键代码,包括箭头键(
^[OA^[OB
等)和删除键(
^[[3~
)可能会被误解


从my.vimrc中删除有问题的行修复了问题。

您是指Delete键(电脑键盘上的退格)还是Fn Delete(电脑上的删除)?离题:如何将图形键盘按钮添加到StackOverflow帖子中?@一个拥有很长Nick的家伙:使用
Del
。在我的例子中,我使用给定的
imap
,得到了有趣的结果,我通过将
lxi
更改为just
xi
。值得一提的是,我在dwm上使用了它。这对我在嵌入式lin上的vim非常有用ssh上的ux设备。需要注意的是,在上述nmap和imap命令中,您不能在.vimrc中键入字符串等,而应按键生成“^[[3~”等.vimrc文件中的“特殊键码”。
set term-builtin_xterm