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


69

我是vi的新手,实际上我从今天起就开始学习vi,并且对退格键的行为有所了解。

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

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

Answers:


39

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

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

ifooBackspaceEsc

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


72

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

vi .vimrc

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

$ set nocompatible
$ set backspace=2

9
OP提到他们不想使用nocompatibility
kiri

1
不需要兼容性,您也可以通过添加第二行代码来实现
Adithya Chakilam 2013年

1
第二行仅对我有用,如果我还要添加第一行。
djjeck

从一个空的.vimrc开始,想知道为什么在iTerm2中的Mac上不能使用退格键。非常感谢!
伊戈尔·马里克

@ minerz029补充,但这是大多数人想要的答案,因为页面标题中没有这样的限定。
Muhd

22

您需要使用来移动光标,以更改为“插入”模式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


11
OP提到神秘行为发生在插入模式下。因此,这不是所提问题的答案。
拉尔斯(LarsH)2013年

实际上,OP并未处于插入模式。问题已被编辑。
Argusvision

1
好。没错 看来我做了一个假设。我的经验是,大多数不熟悉VI的人都会遇到切换模式和在命令模式下导航的问题。我的学生经常抱怨并且归咎于VI仅仅是由于用户错误或没有掌握命令集而导致的行为不稳定。
2013年

1
可以理解的 我同意这是对非插入模式的常见反应。
LarsH 2013年

Argus在编辑中将“处于插入模式”添加到问题标题中,但从一开始它就位于问题的正文中。
LarsH 2015年

13

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

sudo apt-get update
sudo apt-get install vim

它正在按预期的方式工作。.最佳答案
Vicky

那是完美的答案。无需编辑任何配置文件,只需安装vim-runtime软件包即可,一切都按我惯用的方式工作。谢谢!
Olli D-Metz '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.