退格键在Vim / vi中不起作用


85

我只是对.vimrc文件和.bash_aliases文件进行了一些更改,从那时起,我无法使用Backspace键删除单词。

我的.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存储库的目录中。


这解决了我的问题:askubuntu.com/a/899059/525661
Hem

Answers:


158

要允许在插入模式下对所有内容进行退格(包括自动插入的缩进,换行和插入开始),可以设置以下backspace选项:

:set backspace=indent,eol,start

要么

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

默认情况下,此选项为空,不允许您在上述内容上退格。这是标准的Vi行为。

您可以将以下行放入vimrc文件中,以在Vim启动时自动设置它:

set backspace=indent,eol,start  " more powerful backspacing

另外,如果未找到用户vimrc文件,则从Vim 8.0开始,Vim将backspace通过加载defaults.vim脚本设置为此值。


它仍然对我不起作用= /我有 set backspace=2 set backspace=indent,eol,start fixdel
holms

2
@holmsset backspace=2独自尝试
Hoang Huynh

出现这种默认设置的原因是,退格键只是将插入符号向左移动?
Vitaly Zdanevich

2
如果你使用上面vim80,看到这一点:stackoverflow.com/questions/52438373/...
刘易斯成龙

7

就像linux-newb一样,我在全新的Ubuntu 18.04上进行安装,并且vim编辑器的行为与以前使用的其他计算机上的行为不同(包括您描述的退格行为)。我没有意识到我实际上是在使用vi而不是vim(两者都使用来执行vi)。

安装vim然后编辑文件可以使我恢复以前的习惯,包括像我期望的那样退格。

sudo apt install vim

4

我的~/.vimrc文件有内容set nocompatible。在同一文件中添加了另一行以使退格键有效-

set backspace=indent,eol,start

然后跑

source ~/.vimrc

在同一终端中进行更改以在同一外壳中立即生效。无需打开vi并运行

:set backspace=indent,eol,start

2

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

set backspace=indent,eol,start

最后,我发现以下行导致了此问题。

inoremap <expr><C-h> neocomplete#smart_close_popup()

删除此设置后,退格键在插入模式下效果很好。

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


1

对我来说(Debian服务器,与其他Linux上的“ Konsole”相连),在卸载vim-tiny软件包并安装了vim软件包之后,就解决了退格键和箭头键的问题。


1
也许这些软件包安装了不同的vimrc文件。
尤金·雅玛什

1

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

删除病毒可解决此问题。


1

很多时候,如果使用的是像Putty之类的SSH客户端,它也是选择的getty类型的函数。最可取的是使用vt100 +,因为它是最标准的仿真。

我已经有:fixdel没有工作。我必须将其删除并用第一个建议替换它才能使其正常工作

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.