我想应用搜索并替换正则表达式模式,该模式仅在文本文件的给定范围内的行和列中起作用,如下所示:
AAABBBFFFFBBBAAABBB
AAABBBFFFFBBBAAABBB
GGGBBBFFFFBHHAAABBB
例如,我想在第 1 到 2 行范围和第 4 到 6 列中用 YYY 替换 BBB,然后获得以下输出:
AAAYYYFFFFBBBAAABBB
AAAYYYFFFFBBBAAABBB
GGGBBBFFFFBHHAAABBB
有办法用 Vim 做到这一点吗?
:1,2 s/\%3cBBB/YYY/
\%3c
表示第三列(参见 :help /\%c
或更多全局内容 :help pattern
)
如果这始终是您要替换的第一个,则只需不要指定 /g
:1,2s/BBB/YYY/
会很好用。
或者,如果您需要准确指定要替换的列,可以使用
\%Nv
语法,其中 N 是虚拟列(看起来是列,因此选项卡是多个列,对于实际列使用 c 而不是 v )
替换第 1 行和第 2 行上的第二组 B 可以通过以下方式完成:
:1,2s/\%11vBBB/YYY/
指定行和列:1,2s/%>3c%<7cB/Y/gc