2010-10-02 2 views
6

Я хочу, чтобы применить поиск и замену регулярного выражения, которые работают только в заданном диапазоне строки и столбца в текстовом файле так:Поиск и замена в диапазоне строки и столбца

AAABBBFFFFBBBAAABBB 
AAABBBFFFFBBBAAABBB 
GGGBBBFFFFBHHAAABBB 

Для Например, я хочу, чтобы заменить ГЭБ с YYY в пределах линии от 1 до 2, а из колонки 4 до 6, а затем получить этот результат:

AAAYYYFFFFBBBAAABBB 
AAAYYYFFFFBBBAAABBB 
GGGBBBFFFFBHHAAABBB 

есть ли способ сделать это с Vim?

ответ

11
:1,2 s/\%3cBBB/YYY/ 

\%3c означает третью колонку (см :help /\%c или более глобально :help pattern)

+0

Столбец четвертый:: 1,2s/\% 4cBBB/YYY / – aleroot

4

Если это всегда первый, который вы хотите заменить, просто не указать/г

:1,2s/BBB/YYY/ 

будет работать нормально.

В качестве альтернативы, если вам нужно точно указать, какой столбец вы хотите заменить, вы можете использовать синтаксис \%Nv, где N - это виртуальный столбец (столбец, как он выглядит, поэтому вкладки представляют собой несколько столбцов, используйте c вместо v для фактического столбцы)

Замена второго набора B на строках 1 и 2 может быть сделано с:

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

'\% v' vs' \% c' ... до него, чтобы рассказать нам. – Benoit

Смежные вопросы