vim使用先前匹配的模式搜索和替换表达式
我的数据文件中有多行,如下所示vim使用先前匹配的模式搜索和替换表达式,vim,Vim,我的数据文件中有多行,如下所示 <some-text>:<fixed-string> : 我想在冒号周围增加一些空间,以提供给其他一些需要这样做的工具。我希望在vim中执行此操作(而不是sed或其他工具) 我试着做一些类似的事情 %s/[a-z]*:<fixed-string>/\1 : <fixed-string>/gc %s/[a-z]*:/\1:/gc 这似乎不起作用。有人能帮忙吗?为了处理大写和小写,我尝试使用(\a)*这是下一步。
<some-text>:<fixed-string>
:
我想在冒号周围增加一些空间,以提供给其他一些需要这样做的工具。我希望在vim中执行此操作(而不是sed或其他工具)
我试着做一些类似的事情
%s/[a-z]*:<fixed-string>/\1 : <fixed-string>/gc
%s/[a-z]*:/\1:/gc
这似乎不起作用。有人能帮忙吗?为了处理大写和小写,我尝试使用(\a)*这是下一步。请尝试以下操作:
%s/\(.*\):固定字符串$/\1:固定字符串/g
或者这个:
%s/:fixed string$/:fixed string/g请尝试以下操作:
%s/\(.*\):固定字符串$/\1:固定字符串/g
或者这个:
%s/:fixed string$/:fixed string/g您没有任何捕获组,因此无法使用
\1
。您要么需要使用捕获组,\zs
&\ze
,要么向后看,向前看
使用捕获组:
:%s/\(\l*\):fixed/\1 : fixed/gc
使用\zs
和\ze
设置匹配的开始和结束
:%s/\l*\zs:\zefixed/ : /gc
向前看,\@=
,向后看,\@=
:
:%s/\(\l*\)\@<=:\(fixed\)\@=/ : /gc
您没有任何捕获组,因此无法使用
\1
。您要么需要使用捕获组,\zs
&\ze
,要么向后看,向前看
使用捕获组:
:%s/\(\l*\):fixed/\1 : fixed/gc
使用\zs
和\ze
设置匹配的开始和结束
:%s/\l*\zs:\zefixed/ : /gc
向前看,\@=
,向后看,\@=
:
:%s/\(\l*\)\@<=:\(fixed\)\@=/ : /gc
您的文本实际上是否在
标记中?%s/\([^::\+\):fixed/\1:fixed/gc
您的文本实际上是否在
标记中?%s/\([^::\+\):fixed/\1:fixed/gc