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

时间:2012-07-19 11:47:46

标签: vim

我刚刚对.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存储库。

7 个答案:

答案 0 :(得分:110)

要允许在插入模式下覆盖所有内容(包括自动插入的缩进,换行符和插入开始),您可以设置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会通过加载defaults.vim脚本将backspace设置为此值。

答案 1 :(得分:8)

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

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

sudo apt install vim

答案 2 :(得分:2)

我的~/.vimrc文件包含内容set nocompatible。在同一文件中添加了另一行以使退格工作 -

set backspace=indent,eol,start

然后运行

source ~/.vimrc

在同一个终端中进行更改,以便在同一个shell中立即生效。无需打开vi并运行

:set backspace=indent,eol,start

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

删除vim-tiny修复了问题。

答案 5 :(得分:1)

很多时候,如果使用像Putty这样的SSH客户端或其他类似的东西,它也是所选getty类型的函数。最优选的是使用vt100 +,因为它是最标准的仿真。

我已经:fixdel无效了。我不得不将其删除并将其替换为第一个建议以使其正常工作

答案 6 :(得分:1)

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

  

set backspace=indent,eol,start

最后,我发现以下行引发了这个问题。

  

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

删除此设置后,退格键在插入模式下运行良好。

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