vim中调换两个单词。

比如,经常的遇到项目中for循环中对循环迭代子的处理nCnt++,有时候就会写成前面的格式,但是很多编码规约需要你写成++nCnt,如果要进行手工一个个来比较麻烦,如何使用vim来实现呢。这里可以采用\(\) 正则表达式中的括号,来达到响应的效果。相应的置换表达式如下:
:%s/\(\<\h\w*\)\s*\(++\)/\2\1/gc

解释:
\(\) 实际在动作上起到一个括号的作用,主要为了后面置换的时候\2\1使用,比如\1代表匹配和第一个 \( 和 \) 之间的子表达式的匹配文本相同的字符串。同理\2使用第二子表达式,先不管前面的搜索匹配模式,看后面的置换用的\2\1,相当于将前面第二个表达式的匹配字串和第一个表达式的匹配字串连接成新的字符串。相当于达到了两个单词前后置换的效果。
再看看前面搜索模式,是由两组括号组成的表达式,第一组括号代表匹配一个标志符,相当于一个变量名,第二个就是单纯的++,中间因为可能有空格,所以加入了\s*匹配。

0 Responses to "vim中调换两个单词。"