我有一个包含四个变量的文本文件(TA 000,TB 111,T2 333,T56 R88),彼此间隔3个单独的空格,如:
TA 000 TB 111 T2 333 T56 R88
是否可以用vim擦除变量中的单个空格,保持3个用于分隔变量的空格?
TA000 TB111 T2333 T56R88
答案 0 :(得分:2)
当然可以。一种方法是使用捕获组,捕获单词+单个空格+数字,并仅使用单词+数字重新组合:
:%s/\(\w\+\) \(\d\+\)/\1\2/g
另一种方法只匹配单个空格(并将其替换为空),断言(但不匹配)它周围的东西:
:%s/\w\zs \ze\d//g
\zs
和\ze
(您可以通过:h /\zs
等查找任何内容)特定于Vim。一个变体(也适用于其他正则表达式引擎)将使用正面的 lookahead 和 lookbehind ,但语法更复杂。
如果这三个空格具有特殊含义(限制匹配的位置),您也可以将这些空间合并到两种方法中。我把它留给你,因为这样相对容易的问题提供了很好的学习经验: - )