Vim 编辑
100%

高级文本操作 · 第 7 课

Vim 编辑

学习 Vim 如何组合操作符、移动命令、寄存器、放置和撤销命令来编辑文本。

Vim 编辑命令通常把操作符与移动命令或文本对象组合起来。这种语法让同一种操作可以作用于字符、单词、行及更大范围。练习前请按 Esc 返回普通模式。

组合操作符与移动命令

一般形式为:

[count] operator [count] motion

常用操作符包括:

  • d:删除文本。
  • c:更改文本,然后进入插入模式。
  • y:抽取(yank),也就是复制文本。

例如,dw 会删除 w 移动命令覆盖的范围,d$ 则从光标删除到行尾。2dw 会把删除操作应用于两次单词移动。

在普通模式中,d$ 会做什么?

编辑字符和行

以下命令是方便的快捷形式:

  • x:删除光标下的字符。
  • dd:按整行删除当前行。
  • 3dd:从当前行开始删除三行。
  • cc:更改当前行并进入插入模式。
  • r{char}:用 {char} 替换光标下的字符。
  • R:进入替换模式,直到按下 Esc

dd 这样重复操作符会使其按行工作。添加计数可以扩大行数。

普通模式中的哪个命令会删除当前行及其后两行?

更改文本并进入插入模式

c 操作符会删除选定文本并进入插入模式,以便输入替代内容:

  • ce:更改到单词末尾。
  • c$:更改到行尾。
  • cc:更改完整的当前行。
  • ciw:更改光标下的内部单词。
  • caw:更改一个单词文本对象,包括 Vim 所定义的周围空白。

cw 的行为有一个历史特例,通常与 ce 相似。iw 等文本对象可以更清楚地表达预期边界。

普通模式中的哪个命令会删除光标下的内部单词,并进入插入模式以进行替换?

抽取和放置文本

Vim 把复制称为抽取(yank),把粘贴称为放置(put)

  • yw:抽取单词移动覆盖的范围。
  • yy:抽取当前行。
  • p:字符式文本放在光标之后,行式文本放在当前行下方。
  • P:放在光标之前或当前行上方。

删除和更改也会把文本存入寄存器,因此后续的 p 可能会放置最近删除的文本,而不是更早抽取的内容。具名寄存器可以保留特定文本,但开始时应先留意最近一次操作存储了什么。

使用 yy 抽取当前行后,哪个命令会把该行放在当前行下方?

撤销、重做和重复

在普通模式中:

  • u:撤销最近一次更改。
  • Ctrl+R:重做已撤销的更改。
  • .:在适用时于当前位置重复最近一次更改。
  • J:连接当前行和下一行。

撤销历史适用于缓冲区更改,而不只是光标移动。应保存检查点并审查编辑结果,不要依赖无限或永久的撤销历史。

普通模式中的哪个命令会重做刚刚撤销的更改?

要在可丢弃文本上练习操作符、移动命令和恢复,可以尝试以下动手实验:

  1. 在 Linux 中使用 Vim 和 Nano 编辑文本文件 - 使用 vi/vim 和 nano 练习创建文件、编辑文本、保存文件和导航,并在真实场景中应用删除、更改、抽取和放置文本等概念。

课程已完成

你已完成 Vim 编辑

现在,你可以在普通模式中组合 Vim 编辑操作并从错误中恢复。

  • 把操作符与移动命令、文本对象和计数组合。

  • 按选定范围删除字符或完整行。

  • 更改文本并进入插入模式输入替代内容。

  • 抽取和放置字符式或行式文本。

  • 有意识地撤销、重做或重复更改。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 高级文本操作