vi 中插入模式下的退格键不会删除字符

vi 中插入模式下的退格键不会删除字符

我是 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

相关内容