Backspace键在Vim / vi中不起作用

我只是对.vimrc文件和.bash_aliases文件做了一些更改,从那时候我不能用退格键删除单词。

我的.vimrc文件有:

 set nocompatible set number set incsearch set autoindent set ruler set autowrite set smarttab set linebreak set spell set et set title set mouse=v set history=50 set tabstop=4 set matchtime=2 set matchpairs+=<:> syntax enable filetype plugin indent on filetype indent on set sw=4 map <f2> :w\|!python % hi SpellBad ctermfg=000 guifg=#000 

而我的.bash_aliases文件有两行Vim:

 alias vim="vim -c 'startinsert' -u ~/.vim/.vimrc" alias vi="vi -c 'startinsert' -u ~/.vim/.vimrc" 

我的~/.vim目录没有一个插件或脚本,所以没有任何插件会导致这个问题。

~/.vim/.vimrc是一个符号链接。 实际的.vimrc文件位于~/vimrc/目录,这是一个git仓库。

要允许在插入模式下退格(包括自动插入缩进,换行和插入开始),请设置以下选项:

 :set backspace=indent,eol,start 

要么

 :set backspace=2 "compatible with version 5.4 and earlier 

默认情况下这个选项是空的,不允许你退格上述的东西。 这是标准的Vi行为。

请参阅:help 'backspace'

对于我(Debian服务器,从其他linux的“Konsole”连接),卸载vim-tiny软件包并安装vim软件包后,backspace键和箭头键的问题就解决了。

我在urxvt + tmux上通过SSH在Debian 7.8上遇到了同样的问题。 我安装了vim和vim-tiny。

删除vim-tiny修复了这个问题。

很多时候,如果使用像Putty这样的SSH客户端,它也是所选gettytypes的函数。 最好的办法是使用vt100 +,因为它是最标准的模拟。

我已经有:fixdel这是不工作。 我不得不删除它,并用第一个build议来取代它,以使其工作

对我来说,我有以下的设置,但是退格仍然不起作用。

set backspace=indent,eol,start

最后,我发现下面的一行导致了这个问题。

inoremap <expr><Ch> neocomplete#smart_close_popup()

当这个设置被删除时,退格键在插入模式下工作良好。

Reason :这是因为Vim将CTRL-H视为退格,并且在插入模式下,该行会重新映射到完整的#smart_close_popup()。