Vim 编辑命令通常把操作符与移动命令或文本对象组合起来。这种语法让同一种操作可以作用于字符、单词、行及更大范围。练习前请按 Esc 返回普通模式。
高级文本操作 · 第 7 课
Vim 编辑
学习 Vim 如何组合操作符、移动命令、寄存器、放置和撤销命令来编辑文本。
组合操作符与移动命令
一般形式为:
[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:连接当前行和下一行。
撤销历史适用于缓冲区更改,而不只是光标移动。应保存检查点并审查编辑结果,不要依赖无限或永久的撤销历史。
普通模式中的哪个命令会重做刚刚撤销的更改?
要在可丢弃文本上练习操作符、移动命令和恢复,可以尝试以下动手实验:
- 在 Linux 中使用 Vim 和 Nano 编辑文本文件 - 使用 vi/vim 和 nano 练习创建文件、编辑文本、保存文件和导航,并在真实场景中应用删除、更改、抽取和放置文本等概念。
课程已完成
你已完成 Vim 编辑
现在,你可以在普通模式中组合 Vim 编辑操作并从错误中恢复。
把操作符与移动命令、文本对象和计数组合。
按选定范围删除字符或完整行。
更改文本并进入插入模式输入替代内容。
抽取和放置字符式或行式文本。
有意识地撤销、重做或重复更改。