3

我正在尝试在某些列之间的单行中替换所有不匹配的字符(搜索后)。

示例
搜索可以是所有内容
在下面的示例中搜索 =test
不匹配字符的替换字符:空格。

我想在第10 列和第 30 列之间test替换所有不属于 " "的字符。 第 10 列和第 30 列用
|

before:  djd<aj.testjal.kjetestjaja testlala ratesttsuvtesta !<-a-
                  |                   |   
after:   djd<aj.test       test     testlala ratesttsuvtesta !<-a-

我怎么能意识到这一点?

4

2 回答 2

3

在该行上使用以下替换命令。

:s/\(test\)\zs\|\%>9v\%<31v./\=submatch(1)!=''?'':' '/g

如果使用视觉选择指定列的范围,请运行

:'<,'>s/\(test\)\zs\|\%V./\=submatch(1)!=''?'':' '/g
于 2012-04-11T07:43:32.360 回答
1

一种方法可能是使用可视模式 (control+v) 选择适当的列范围

选择后,可以使用(请参阅此问题)进行搜索和替换

 %s/\%Vfoo/bar/g

可以在此处找到不测试的正则表达式:正则表达式匹配不包含单词的行?

于 2012-04-10T13:02:09.553 回答