如何在gvim中交换C / C ++赋值语句的左手和右手?

时间:2010-12-17 15:56:43

标签: java c++ python vim variable-assignment

说实话,我实际上有一个解决方案,但谷歌搜索从这个网站找到了很多很棒的技巧,我不得不回馈一些东西。这就是我想出的。对于单行:

  

s / ^ \(\ s \ + \)\(。* \)= \(。* \); / \ 1 \ 3 = \ 2; /

对于从当前行开始的多行,添加.,.+<line count>。例如:

  

。,。+ 28s / ^ \(\ s \ + \)\(。* \)= \(。* \); / \ 1 \ 3 = \ 2; /

将替换当前行和以下28行。这也适用于Java和Perl。对于Python,省略模式和替换中的结尾分号(除非您是使用可选分号的排序)。

输入所有内容后,我发现我确实有一个问题。有没有办法简化它,所以我没有这么多转义字符?

2 个答案:

答案 0 :(得分:2)

使用'非常神奇':在表达式中添加\v。见:help magic。基本上,这意味着所有非字母数字字符都具有特殊的(即正则表达式运算符含义),除非转义,这意味着它们不需要在上面的用法中进行转义。

答案 1 :(得分:1)

在正则表达式的开头使用\ v可以帮助提高它的可读性。 \ v表示“非常神奇”,所有字符都是特殊的,除了集合'0' - '9','a' - 'z','A' - 'Z'和'_'中的字符。

所以你的第一个例子可以这样转换:

s/\v^(\s+)(.*) \= (.*)\;/\1\3 = \2\;/

现在需要转义=;以将其标识为文字,但所有其他高ASCII字符都不会。