2010-10-02 14 views
6

chcę zastosować wyszukiwania i zamiany wzorca wyrażenia regularnego, które działają tylko w określonym zakresie linii i kolumny w pliku tekstowym tak:wyszukiwania i zamiany w zakresie wiersza i kolumny

AAABBBFFFFBBBAAABBB 
AAABBBFFFFBBBAAABBB 
GGGBBBFFFFBHHAAABBB 

Dla przykładem chcę zastąpić BBB z YYY w zakresie linii 1 do 2 i od kolumnie 4 do 6, a następnie uzyskanie tego wyjścia:

AAAYYYFFFFBBBAAABBB 
AAAYYYFFFFBBBAAABBB 
GGGBBBFFFFBHHAAABBB 

Czy istnieje sposób, aby zrobić to z vim?

Odpowiedz

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

\%3c oznacza trzeciej kolumnie (patrz :help /\%c lub więcej globalnie :help pattern)

+0

Kolumna jest czwarta:: 1,2s/\% 4cBBB/YYY / – aleroot

4

Jeśli jest to zawsze pierwsza chcesz zastąpić, po prostu nie precyzują/g

:1,2s/BBB/YYY/ 

będzie działać prawidłowo.

Ewentualnie, jeśli chcesz dokładnie określić kolumnę, którą chcesz zastąpić, możesz użyć składni \%Nv, gdzie N jest kolumną wirtualną (kolumna w takiej formie, w jakiej znajdują się tabulatory, więc karty są wieloma kolumnami, użyj c zamiast v do faktycznego kolumny)

wymiana drugiego zestawu B jest na linie 1 i 2, mogą być wykonane z:

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

'\% v' kontra' \% c' ... do niego, aby nam powiedzieć. – Benoit

Powiązane problemy