Xia*_* Su 5 vim regular-expression
我有像
abcdefg
join!
abcdef
no join
abcdefg
join!
Run Code Online (Sandbox Code Playgroud)
如果一行与正则表达式匹配,^a.+g$那么我希望它们被加入,所以它是:
abcdefgjoin!
abcdef
no join
abcdefgjoin!
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点VIM?
evi*_*oup 14
在正常模式下,J(不同于j,将光标向下移动一行)用于将一行与其正下方的行连接起来。但是,默认情况下,它会在第一行的末尾添加一个空格;要获得您想要的结果(在不插入额外空间的情况下加入行),必须使用gJ.
为了在 ex-mode 中使用 normal-mode 命令(:在正常模式下按 键进入),必须使用该normal命令。:h normal在 vim 中查看。因此,要使用与模式匹配的下一行,可以使用(请注意,默认情况下,您必须转义 the+才能使其与 vim 的正则表达式一起使用,这是与原始 vi 的古老正则表达式引擎保持兼容性的结果):
:/^a.\+g$/normal gJ
Run Code Online (Sandbox Code Playgroud)
要处理与模式匹配的每一行,可以像这样使用:global命令(参见:h :gvim 中):
:global/^a.\+g$/normal gJ
Run Code Online (Sandbox Code Playgroud)
或者,更简洁地说:
:g/^a.\+g$/norm gJ
Run Code Online (Sandbox Code Playgroud)
也可以使用 ex 命令join(请参阅 参考资料:h :join)以稍微减少输入的方式实现相同!的目的(在这种情况下,末尾告诉join不要在第一行的末尾插入空格)。
:g/^a.\+g$/join!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9805 次 |
| 最近记录: |