在一定范围的行和列中搜索和替换

问题描述 投票:0回答:3

我想应用搜索并替换正则表达式模式,该模式仅在文本文件的给定范围内的行和列中起作用,如下所示:

AAABBBFFFFBBBAAABBB
AAABBBFFFFBBBAAABBB
GGGBBBFFFFBHHAAABBB

例如,我想在第 1 到 2 行范围和第 4 到 6 列中用 YYY 替换 BBB,然后获得以下输出:

AAAYYYFFFFBBBAAABBB
AAAYYYFFFFBBBAAABBB
GGGBBBFFFFBHHAAABBB

有办法用 Vim 做到这一点吗?

regex vim
3个回答
12
投票
:1,2 s/\%3cBBB/YYY/

\%3c
表示第三列(参见
:help /\%c
或更多全局内容
:help pattern


4
投票

如果这始终是您要替换的第一个,则只需不要指定 /g

:1,2s/BBB/YYY/

会很好用。

或者,如果您需要准确指定要替换的列,可以使用

\%Nv
语法,其中 N 是虚拟列(看起来是列,因此选项卡是多个列,对于实际列使用 c 而不是 v )

替换第 1 行和第 2 行上的第二组 B 可以通过以下方式完成:

:1,2s/\%11vBBB/YYY/

0
投票

指定行和列:1,2s/%>3c%<7cB/Y/gc

© www.soinside.com 2019 - 2024. All rights reserved.