我是vi的新手,实际上我从今天开始就开始学习vi,并且对退格键的行为有所了解。实际上,当我第一次在Ubuntu 12.04上启动vi时,我的退格键正常工作,但是此后它开始表现异常。每当我在插入模式下按退格键时,它只会向左移动一个位置,而不是擦除字符。如何找回默认的退格功能?请注意,我不想安装vim或设置不兼容。
我是vi的新手,实际上我从今天开始就开始学习vi,并且对退格键的行为有所了解。实际上,当我第一次在Ubuntu 12.04上启动vi时,我的退格键正常工作,但是此后它开始表现异常。每当我在插入模式下按退格键时,它只会向左移动一个位置,而不是擦除字符。如何找回默认的退格功能?请注意,我不想安装vim或设置不兼容。
Answers:
检查您是否确实vi
通过
$ vi --version | head -n 1
这在我的机器上显示(Debian 7)
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Feb 10 2013 02:27:59)
可以使vim表现得更像vi。这可以通过给命令来实现vi
,而不是vim
从所述命令行,其中vi
只有一个对称-链接到vim
,在这种情况下Vim是在vi模式打开。您可以使用进行检查:set compatible?
。
如前一个答案所述,仅insert mode
当set compatible
启用启用后,退格键的效果才可见。
注意:在vi兼容模式下,您不能在之前输入(在输入之前insert mode
)或eol或缩进中的文本上退格insert mode
。看到 :help 'bs'
'backspace' 'bs' string (default "")
global
{not in Vi}
Influences the working of <BS>, <Del>, CTRL-W and CTRL-U in Insert
mode. This is a list of items, separated by commas. Each item allows
a way to backspace over something:
value effect
indent allow backspacing over autoindent
eol allow backspacing over line breaks (join lines)
start allow backspacing over the start of insert; CTRL-W and CTRL-U
stop once at the start of insert.
When the value is empty, Vi compatible backspacing is used.
For backwards compatibility with version 5.4 and earlier:
value effect
0 same as ":set backspace=" (Vi compatible)
1 same as ":set backspace=indent,eol"
2 same as ":set backspace=indent,eol,start"
尝试不同的设置以了解其含义:在插入模式下输入字符/换行符和缩进,退出并重新进入插入模式,然后尝试退格。
不熟悉vi行为并且不坚持使用普通vi(无论如何也不推荐)的用户应该使用:set backspace=indent,eol,start
。在Debian上的Afaik中,通常会使用此设置安装系统范围的配置文件。
您可以通过获取当前设置:set bs?
。
如果尚不存在,请在用户主目录中创建一个名为.vimrc的新文件。在这里,我们将使用vi同时创建和编辑
sudo vi ~/.vimrc
添加以下命令,其中包括关闭兼容模式和退格键擦除功能:
set nocp
set backspace=indent,eol,start
使用保存和退出文件
:wq
关闭兼容模式可允许使用旧键盘惯用的箭头键。
由于我们在创建文件时需要sudo'd,因此文件的所有权可能是root。您可以将文件整理给用户。
在我的情况下,这是用于树莓派的,因此用户和组是pi:
chown pi:pi ~/.vimrc
现在再次启动vi并享受!
set nocp
为我成功了
我认为最好的方法是查看VI / VIM速查表:http : //www.viemu.com/vi-vim-cheat-sheet.gif
进入普通模式(ESC),然后按SHIFT +X。
vim
。