说实话,我实际上有一个解决方案,但谷歌搜索从这个网站找到了很多很棒的技巧,我不得不回馈一些东西。这就是我想出的。对于单行:
s / ^ \(\ s \ + \)\(。* \)= \(。* \); / \ 1 \ 3 = \ 2; /
对于从当前行开始的多行,添加.,.+<line count>
。例如:
。,。+ 28s / ^ \(\ s \ + \)\(。* \)= \(。* \); / \ 1 \ 3 = \ 2; /
将替换当前行和以下28行。这也适用于Java和Perl。对于Python,省略模式和替换中的结尾分号(除非您是使用可选分号的排序)。
输入所有内容后,我发现我确实有一个问题。有没有办法简化它,所以我没有这么多转义字符?
答案 0 :(得分:2)
使用'非常神奇':在表达式中添加\v
。见:help magic
。基本上,这意味着所有非字母数字字符都具有特殊的(即正则表达式运算符含义),除非转义,这意味着它们不需要在上面的用法中进行转义。
答案 1 :(得分:1)
在正则表达式的开头使用\ v可以帮助提高它的可读性。 \ v表示“非常神奇”,所有字符都是特殊的,除了集合'0' - '9','a' - 'z','A' - 'Z'和'_'中的字符。
所以你的第一个例子可以这样转换:
s/\v^(\s+)(.*) \= (.*)\;/\1\3 = \2\;/
现在需要转义=
和;
以将其标识为文字,但所有其他高ASCII字符都不会。