我是 vi 新手,实际上我从今天才开始学习 vi,但我对退格键的行为感到困惑。
实际上,当我第一次在 Ubuntu 12.04 上启动 vi 时,退格键工作正常,但之后它开始出现奇怪的行为。每当我在插入模式下按下退格键时,它只会向左移动一个位置,而不是删除该字符。
我如何恢复默认的退格功能?请注意,我不想安装 vim 或设置 nocompatibilty。
答案1
这是最简单的解决方案。
打开终端,转到主目录并输入
vi .vimrc
打开一个新文件,现在将这些行添加到文件中并保存退出
$ set nocompatible
$ set backspace=2
答案2
这是 vi 的正确行为,它确实会删除该字符,只是不会像在 vim 中那样用空格替换它来显示它。当您用另一个字符覆盖已删除的字符或切换回命令模式时,它将显而易见。
例如,从空行上的命令模式开始,以下内容将导致该行包含fo
:
ifooBackspaceEsc
在你按下Esc按键之前,该行将显示foo
,但最后一行o
已被标记为“擦除列”。请参阅http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88(主要是该标题下的第 4 点,另外再往下浏览一下关于 <Control>-H 的内容)
答案3
您需要使用 移动光标切换到“插入”模式i
。还有其他方法可以直接删除字符。您可以下载我在教授 VI 课程时使用的 powerpoint这里。
听起来您处于“命令”模式。要移动光标:
H
= 向左,J
= 向上,K
= 向下, L
= 向右
将光标定位后,你可以删除文本如下:
x
删除字符在下面光标
X
删除字符前光标
dw
从光标中删除到下一个单词
dd
删除线光标处于打开状态。
到输入文本,您可以使用其中一种文本输入模式。
a
将文本添加到正确的
A
将文本添加到光标结尾
i
将文本添加到当前行左边光标的
I
添加测试到开始当前行
o
打开新行以下当前行并进入文本输入模式
O
打开一个新行多于当前行并进入文本输入模式
要退出文本输入模式并返回命令模式,请使用Esc
。
到撤消更改:(学生最喜欢的)
u
撤消最后一个命令进入
U
撤销所有更改到**当前行**
保存/退出:
:w
写入(保存)文件并保持打开状态
:wq
写入(保存)文件并保持打开状态退出VI
:q
退出如果你没有做出任何改变
:q!
退出无需保存更改
ZZ
写入(保存)文件并退出VI (同:wq
)
答案4
安装完整的 vim 包以获取退格键和箭头键功能
sudo apt-get update
sudo apt-get install vim