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

San*_*mar 63 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
Run Code Online (Sandbox Code Playgroud)

我的.bash_aliases文件有两行Vim:

alias vim="vim -c 'startinsert' -u ~/.vim/.vimrc"
alias vi="vi -c 'startinsert' -u ~/.vim/.vimrc"
Run Code Online (Sandbox Code Playgroud)

我的~/.vim目录没有单个插件或脚本,因此插件没有任何机会导致这种情况.

~/.vim/.vimrc是一个符号链接.实际.vimrc文件~/vimrc/位于git存储库的目录中.

Eug*_*ash 123

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

:set backspace=indent,eol,start
Run Code Online (Sandbox Code Playgroud)

要么

:set backspace=2  "compatible with version 5.4 and earlier
Run Code Online (Sandbox Code Playgroud)

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

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

set backspace=indent,eol,start  " more powerful backspacing
Run Code Online (Sandbox Code Playgroud)

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

  • @holms单独尝试`set backspace = 2` (2认同)
  • 如果您使用上面的 vim80,请参阅:/sf/ask/3670686141/ added-vimrc (2认同)

Mat*_*ein 21

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

安装vim然后编辑一个文件,恢复了我习惯的行为,包括像我期望的那样工作的退格。

sudo apt install vim
Run Code Online (Sandbox Code Playgroud)


ash*_*ish 13

上面的内容对我没有任何作用。尝试过CTRL+backspace它救了我


Ani*_*kur 9

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

set backspace=indent,eol,start
Run Code Online (Sandbox Code Playgroud)

就跑

source ~/.vimrc
Run Code Online (Sandbox Code Playgroud)

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

:set backspace=indent,eol,start
Run Code Online (Sandbox Code Playgroud)


Bug*_*ler 6

我从源代码编译了vim8.2。然后我遇到了这个问题。source $VIMRUNTIME/defaults.vim插入后.vimrcBackSpace作品。