VIM 찾기 / 검색에서 백 슬래시와 슬래시를 어떻게 이스케이프합니까?


96

예를 들어, 역 슬래시 나 슬래시가 포함 된 문자열을 찾아서 바꾸고 싶다면 vim에서 어떻게이 작업을 수행 할 수 있습니까? 감사합니다!

찾기 및 바꾸기는 다음과 같습니다. :%s/foo/bar/g

모든 발생을 찾고 다음으로 <dog/>바꾸 려면 어떻게해야합니까?<cat\>


3
아니 엄격하게 답변,하지만 당신은 아마 읽어야 도움이 마법을
톰 모리스

+1 Tom, 일반적으로 사소한 정규식 이상으로 작업 할 때 가장 건전한 솔루션입니다.
Randy Morris

@Tom @Randy하지만 ... vi --help내 서버에서 특수 문자 이스케이프에 대한 설명을 제공하지 않습니다 ... 이것이 사람들이 시작하기 위해 stackoverflow에 오는 이유입니다 ...
aequalsb

@aequalsb :help magic는 vim 안에 입력하는 것 입니다. vim에 대한 명령 줄 인수가 아닙니다.
doubleDown

답변:


150

Linux 프로그램에서 대부분의 다른 곳에서 백 슬래시를 사용하여 문자를 이스케이프하는 것과 같은 방법입니다.

:%s/<dog\/>/<cat\\>

그러나 대신 다른 구분 기호를 선택할 수 있습니다.

:%s@<doc/>@<cat\\>@

이렇게하면 많은 시간이 소요되고 혼란스러운 백 슬래시를 수많은 슬래시가있는 패턴으로 입력 할 수 있습니다.

로부터 문서 :

대신의 /패턴 및 교체 문자열을 둘러싸을, 당신은 다른 싱글 바이트 문자가 아닌 영숫자 사용할 수 있습니다 \, "또는 |. /검색 패턴 또는 대체 문자열에 를 포함하려는 경우 유용 합니다.


1
그래서 그것은 당신이 선택한 구분자를 자동으로 알아낼 것입니까?
stormist

11
예. 뒤의 문자 s는 구분 기호로 사용됩니다. 문서에서 목록을 어디에서 찾았는지 알 수 없지만 적어도 /:;*%@#유효하다고 확신 합니다.
Cascabel

이것은 많은 Windows 스타일 경로가있는 파일에서 \를 /로 대체 할 때 유용합니다. 감사.
Isaac Nequittepas

문서에서 해당 메시지를 얻으려면 다음을 사용하십시오. h e146
jcollado

구분자를 변경할 수 있을지 몰랐습니다! 엄청나 네요-감사합니다.
Brettins 2017 년

22
%s:<dog/>:<cat>

특정 패턴에 대해 성가신 경우 / 구분 기호를 바꿀 수 있습니다.


3
:구분 기호는 +1입니다 . 나는 당신이 그것을 사용할 수 있는지 몰랐습니다. 나는 항상 @'탈출-메스'시대에 사용
Jeffrey Jose

8

백 슬래시로 인용하십시오. 또한 슬래시 외에 다른 구분 기호를 사용하는 것도 도움이됩니다.

 :%s#<dog/>#<cat\\>#

또는 대체 명령 구분 기호로 슬래시를 사용해야하는 경우

 :%s/<dog\/>/<cat\\>/


2

/문자를 포함하는 레지스터 값을 검색하기 위해 비슷한 것을 찾고있었습니다 (매크로를 기록하기 위해). 이 솔루션은 사용하여 검색하는 것이 었습니다 ?대신의 토큰을 /.


참고 ?역방향 검색을 수행하고, 동일하지 않습니다.
Martin Tournoij

-1

백 슬래시 슬래시 백 슬래시 스타

/(<- the prompt)\/\*

그래서 입력하면 다음과 같이 보입니다.

/\/\*

1
이 답변은 거의 6 년 동안 사이트에 있었던 답변과 어떻게 다릅니 까?
Martin Tournoij
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.