测验:搜索、替换、宏
:%s/old/new/ 已执行,但仅更改了一行上的多个旧值中的第一个。原因是什么?
- 由于没有 g 标志,因此仅替换每行的第一个匹配项。
- 范围规范不正确
- 因为该模式缺少转义符
- vim 的默认行为本来就是全替换,这是另一个原因。
如何在日志中只保留包含 ERROR 的行?
- :g/错误/d
- :%s/错误//g
- :v/错误/d
- :g!/错误/y
宏存储在寄存器中可以得出什么结论?
- 当 vim 重新启动时,宏总是消失。
- 宏使用与 yank 不同的存储空间
- 您可以查看寄存器内容,通过粘贴进行编辑,然后再次保存。
- 运行时可以修改宏
为什么宏的第一个键设置为 0(在行的开头)?
- 加快执行速度
- 使其每次重复时都从同一起点开始。
- 因为0是宣布宏开始的承诺,
- 初始化寄存器
:g/prod/y a 和 :g/prod/y A 有什么区别?
- 小写字母每次都会被覆盖,只留下最后一行,大写字母全部另外堆叠。
- 大写字母会导致错误,因为它们是只读寄存器。
- 大写字母存储在系统剪贴板中
- 两者是一样的,只是表示法不同
如果运行 :%s/pattern//gn 会怎样?
- 它不会改变任何内容,只是告诉您匹配的数量和行数。
- 所有与该模式匹配的部分都将被删除。
- 删除没有模式的行
- 恢复替换