我正在使用以下 vim 命令: :v/^\w*sub/s/.*\n//g
我希望它去掉任何不以开头的行,sub
这样我就可以快速浏览我的 perl 脚本中的所有子标题。
它最终可以工作,但我必须“运行”该命令 8 次才能让它只留下正确的行。为什么它不只是第一次工作?不确定它是否重要,但文件是 ~1600 行,它从第一次删除 ~700 行开始,但最后一次只删除最后 2 行。
:help :g
并:help :v
分两次工作:
这里的问题是,您告诉 Vim 在标记行上执行的操作与由:v
. 由于某些标记丢失,:v
无法对它们执行给定的操作。
为了进行比较,请看以下结果:
:v/^\w*sub/s/.*//g
Run Code Online (Sandbox Code Playgroud)
它不会替换换行符,因此不会弄乱:v
的内部标记,从而按预期在每一行上执行替换。
:help :s
无论如何都是错误的工作工具。正如有人已经评论过的那样,适合这项工作的工具是:help :d
:
:v/^\w*sub/d
Run Code Online (Sandbox Code Playgroud)