vim : 바꾸기 명령에서 검색에서 문자열 사용


16

종종 vim /search 명령을 사용하여 정규 표현식을 확인합니다 (일치하는 내용 만 확인). 그 후 나는 보통 :%sreplace 명령을 사용하는데 , 여기서 검색에서 regexp를 바꿀 문자열로 사용합니다. 예를 들어 먼저 그러한 문자열을 찾습니다.

/TP-\(\d\{5\}\)-DD-\d\{3\}

내가 원하는 것과 정확히 일치하므로 교체를 수행합니다.

:%s/TP-\(\d\{5\}\)-DD-\d\{3\}/\1/g

그러나 여기에 전체 정규 표현식을 다시 작성해야합니다. 일반적으로 정규 표현식이 훨씬 길기 때문에 해결책을 찾고 있습니다.

해당 검색 패턴을 replace 명령에 직접 붙여 넣기위한 기존 바로 가기 또는 vim 스크립트가 있습니까?

터미널에서 vim을 사용합니다 (gvim 없음).

답변:


20

일반적으로 빈 정규식은 이전에 입력 한 정규식을 사용한다는 것을 의미하므로 :%s//\1/g원하는 것을 수행해야합니다.


와우, 너무 쉽다! 정확히 내가 필요한 것, 고마워
kars7e

10
또한 마지막으로 사용한 패턴을 확인하거나 수정하려는 경우 Control-r 을 사용 /하여 검색 패턴 레지스터 ( /) 의 내용을 부분적으로 입력 된 명령 줄에 직접 삽입 할 수 있습니다 (예 : 직후 :%s/).
Chris Johnsen

그것은 매우 유용한 힌트이기도합니다. 감사합니다 @Chris! +1
kars7e

23과 같은 숫자로 "\ 1"을 추적하려면 어떻게해야합니까? "\ 123"으로 해석되지 않도록하려면 어떻게해야합니까?
챔피언

@Champ 역 참조 만 올라가므로 \9모호성이 없습니다.
Kusalananda

4

Ex 명령뿐만 아니라 과거 정규 표현식 검색을보고 변경하는 또 다른 좋은 방법은 이러한 명령을 일반 모드에서 편집하는 것입니다. 이 모드에서 복사 및 붙여 넣기를 포함한 모든 vim 기능을 사용할 수 있습니다.

  • 검색 : ?또는/ 검색을 위해, 시도 q/또는q?
  • Ex 명령이 아닌 :시도q:
  • 이 모드를 종료하려면 CtrlC

자세한 내용은을 참조하십시오 :help q:.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.