2017-09-27 1 views
0

나는 단순한 검색을 알고 있으며 vim에서 모든 사과를 찾아 '오렌지색'으로 대체하는 명령어 (:%s/apple/orange/g)을 대체합니다.vim : 패턴을 찾고 단어를 건너 뛰고 모든 일치하는 줄에 무엇인가를 추가하십시오.

하지만 vim에서 이와 같은 작업을 수행 할 수 있습니까? 파일에서 '밀'을 모두 찾아 다음 단어를 건너 뛰면 "상점"을 추가하십시오 (있는 경우)?

예 : 원본 파일 내용 :

Wheat flour 
Wheat bread 
Rice flour 
Wheat 
검색 후

및 교체 :

Wheat flour store 
Wheat bread store 
Rice flour 
Wheat store 

답변

5

이것은 global 명령을 사용하는 완벽한 시간이다. 주어진 정규 표현식과 일치하는 모든 행에 명령을 적용합니다. 이 경우

     *:g* *:global* *E147* *E148* 
:[range]g[lobal]/{pattern}/[cmd] 
      Execute the Ex command [cmd] (default ":p") on the 
      lines within [range] where {pattern} matches. 

는 명령 norm A store이고 정규식 wheat이다. 그래서 모두 함께 넣어, 우리가 지금

:g/Wheat/norm A store 

가지고, 당신은 이 대체 명령을 사용하여이 작업을 수행하지만 글로벌 찾으 훨씬 더 편리하고 읽을 수 있습니다. 이 경우, 당신은 할 것 :

:%s/Wheat.*/& store 

의미합니다 :

:%s/    " On every line, replace... 
    Wheat   " Wheat 
     .*   " Followed by anything 
     /  " with... 
      &  " The entire line we matched 
       store " Followed by 'store' 
관련 문제