vim删除(字符/数字)和(字符编号)之间的单个空格

时间:2014-11-28 12:39:59

标签: vim

我有一个包含四个变量的文本文件(TA 000,TB 111,T2 333,T56 R88),彼此间隔3个单独的空格,如:

TA 000   TB 111   T2 333   T56 R88   

是否可以用vim擦除变量中的单个空格,保持3个用于分隔变量的空格?

TA000   TB111   T2333   T56R88

1 个答案:

答案 0 :(得分:2)

当然可以。一种方法是使用捕获组,捕获单词+单个空格+数字,并仅使用单词+数字重新组合:

:%s/\(\w\+\) \(\d\+\)/\1\2/g

另一种方法只匹配单个空格(并将其替换为空),断言(但不匹配)它周围的东西:

:%s/\w\zs \ze\d//g

\zs\ze(您可以通过:h /\zs等查找任何内容)特定于Vim。一个变体(也适用于其他正则表达式引擎)将使用正面的 lookahead lookbehind ,但语法更复杂。

如果这三个空格具有特殊含义(限制匹配的位置),您也可以将这些空间合并到两种方法中。我把它留给你,因为这样相对容易的问题提供了很好的学习经验: - )