我的数据文件中有多行,如下所示
<some-text>:<fixed-string>
我希望在冒号周围添加空格以提供给其他期望的工具。我想在vim(不是sed或其他工具)中这样做。
我试图做像
这样的事情%s/[a-z]*:<fixed-string>/\1 : <fixed-string>/gc
这似乎不起作用。有人可以帮忙吗?照顾上层和上层小写我尝试使用(\ a)*即下一步。
答案 0 :(得分:3)
您没有任何捕获组,因此无法使用\1
。您需要使用捕获组,\zs
和\ze
,或者后视和前瞻。
使用捕获组:
:%s/\(\l*\):fixed/\1 : fixed/gc
使用\zs
和\ze
设置匹配的开始和结束
:%s/\l*\zs:\zefixed/ : /gc
前瞻,\@=
和后瞻,\@=
:
:%s/\(\l*\)\@<=:\(fixed\)\@=/ : /gc
就个人而言,我使用\zs
和\ze
,因为它们最容易推理和使用。我也在使用\l
这是[a-z]
的简写。
如需更多帮助,请参阅:
:h /\(
:h /\zs
:h /\@<=
:h /\@=
:h /\l
答案 1 :(得分:1)
请试试这个:
%s / \(。* \):fixed-string $ / \ 1:fixed-string / g
或者这个:
%s /:fixed-string $ /:fixed-string / g