我试图在某些列之间(搜索之后)在一行中替换所有不匹配的字符。
示例 的:
搜索可以是一切
在下面的示例中,search = test
非匹配字符的替换字符:空格。
我想在第10列和第30列之间替换“test
”的所有字符。
第10列和第30列用|
before: djd<aj.testjal.kjetestjaja testlala ratesttsuvtesta !<-a-
| |
after: djd<aj.test test testlala ratesttsuvtesta !<-a-
我怎么能意识到这一点?
答案 0 :(得分:3)
在该行上使用以下替换命令。
:s/\(test\)\zs\|\%>9v\%<31v./\=submatch(1)!=''?'':' '/g
如果使用视觉选择指定了列范围,请运行
:'<,'>s/\(test\)\zs\|\%V./\=submatch(1)!=''?'':' '/g
答案 1 :(得分:1)
一种方法可能是使用可视模式(control + v)
选择合适的列范围选择后,可以使用(see this question)
完成搜索和替换 %s/\%Vfoo/bar/g
可以在此处找到非测试的正则表达式:Regular expression to match a line that doesn't contain a word?