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

Sap*_*jee 89 vi

我是 vi 的新手,实际上我从今天开始学习 vi 并且我已经陷入了退格键的行为。

实际上,当我第一次在 Ubuntu 12.04 上启动 vi 时,我的退格键正常工作,但在那之后它开始出现奇怪的行为。每当我在插入模式下按退格键时,它只会向左移动一个位置而不是擦除字符。

如何恢复默认退格功能?请注意,我不想安装 vim 或设置不兼容。

Adi*_*lam 86

这是最简单的解决方案。
打开终端,进入主目录并输入

vi .vimrc
Run Code Online (Sandbox Code Playgroud)

现在打开一个新文件将这些行添加到文件中并通过保存退出

$ set nocompatible
$ set backspace=2
Run Code Online (Sandbox Code Playgroud)

  • OP 提到他们不想使用 `nocompatibility` (10认同)
  • 如果我还添加了第一行,第二行只对我有用。 (2认同)

gei*_*rha 44

这是 vi 的正确行为,它确实删除了字符,只是没有像 vim 那样用空白替换它来显示它。当您用另一个字符覆盖已擦除的字符或切换回命令模式时,这将很明显。

例如,从空行的命令模式开始,以下将导致该行包含fo

ifooBackspaceEsc

在您按下Esc键之前,该行将显示为foo,但最后一个o已被标记为“擦除列”。请参阅http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88(主要是该标题下的第 4 点,还可以进一步浏览以了解 <Control>-H)


Arg*_*ion 28

您需要通过使用 移动光标来更改为“插入”模式i。还有其他方法可以直接删除字符。您可以在此处下载我在 VI 上教授课程时使用的 PowerPoint 。

听起来您处于“命令”模式。移动光标:
H= 左、J= 上、K= 下、 L= 右

定位光标后,您可以按如下方式删除文本:
x 删除光标的字符
X 删除光标的字符
dw删除光标至下一个单词
dd删除光标所在的

输入文本,您可以使用其中一种文本输入模式。
a将文本添加到右侧光标的
A文本添加到结束当前行的
i文本添加到光标
I再添考到beginin当前行中
o打开一个新的线下方的当前行和你的地方在文字输入模式
O开幕在当前行上方新建一行并使您进入文本输入模式

要退出文本输入模式并返回命令模式,请使用Esc

撤消的变化:(A学生的最爱)
u撤消的最后一个命令中输入
U撤消所有更改为**当前行**

保存/退出: :w写操作(保存)文件并保持打开状态
:wq写入(保存)的文件,并退出VI
:q退出(退出)如果你进行任何更改
:q!退出(退出)不保存修改
ZZ写入(保存)的文件,并退出VI (同:wq

  • OP 提到神秘行为发生在*插入模式*。所以这不是所问问题的答案。 (12认同)

小智 17

安装完整的 vim 包以获得退格和箭头键功能

sudo apt-get update
sudo apt-get install vim
Run Code Online (Sandbox Code Playgroud)

  • 它按预期工作..最佳答案 (3认同)