2009-11-06 4 views
48

vi에서 검색 및 바꾸기 '/'(슬래시)를 어떻게 이스케이프 처리하여 올바른지 확인하십시오. 경로를 말해봐. 같은/in vi 검색 및 바꾸기?

:/사용자/탐/문서/PDF 파일/

:%s//Users/tom/documents/pdfs//<new text>/g --FAILS (obviously) 

:%s/\/Users/tom/documents/pdfs\//<new text>/g -- FAILS with a trailing error 

:%s/'/Users/tom/documents/pdfs/'/<new text>/g -- FAILS with a trailing error 

나는 무엇을 놓치고?

+1

[VIM 찾기/검색에서 어떻게 백 슬래시와 슬래시를 이스케이프 처리합니까?] (http://stackoverflow.com/questions/2465156/how-does-one-escape-backslashes-and-forward-slashes) -in-vim-find-search) – Pureferret

답변

55

내부에서 슬래시를 이스케이프 처리해야합니다.

:%s/\/Users\/tom\/documents\/pdfs\//<new text>/g 
+0

@Sarah - Doh! 네 감사합니다! –

96

또는 당신 :%s,foo/bar/baz,foo/bar/boz,g을 수행 할 수 있습니다 - 나는 거의 결코 사용하기 때문에 탈출 혼란의 슬래시.

+0

야, 나는 그것에 대해 몰랐다! 필드를 구분하기 위해 캐릭터를 사용할 수있을 것 같습니까? –

+0

그래, 나는 단지 쉼표에 익숙해 져 있다고 믿는다. –

+0

당신은 몇 초에 나를 때려 : – Bob

14

Sarah가 제안했듯이 모든 슬래시를 벗어나야합니다.

대신 슬래시 이외의 다른 문자를 구분 기호로 사용할 수 있습니다. 검색 문자열에 슬래시가 많이 있으면 편리합니다.

:%s#/Users/tom/documents/pdfs/#<new test>#g 

이것은 vim에서 완벽하게 작동합니다. 나는 바닐라 바이에 대해 100 % 확신하지 못한다.

+0

요즘 어떻게 vi에 가는지 생각할 수 없습니다. 나는 대부분의 주요 리눅스 배포판이 'vi'를 vim으로 리다이렉트하는 것을 생각하고 있었다. –

+2

리눅스가 유일한 OS가 아니기 때문에 : 많은 BSD가 바닐라 vi 또는 nvi와 함께 제공됩니다. 대부분의 상용 유닉스 시스템도 마찬가지입니다. IRIX에서 vim을 컴파일해야하는 날을 기억합니다 (불행하게도). 바닐라 바이와 함께 살 수 없기 때문입니다. – Bob

+0

너무 오래 전 NetBSD, FreeBSD, OpenBSD와 마찬가지로 데비안은 vi를 nvi에 연결했습니다. 일부는 vim-as-vim과 함께 제공됩니다. – DigitalRoss

3

저는이 질문이 몇 년 전부터 알고 있지만 더 쉬운 해결책을 찾고자하는 사람들에게 2014 년에 "/"구분 기호 대신 "/"구분 기호를 사용할 수 있습니다. 당신은 다음과 같이 다시 앞, 중간에 그것을 할, 그리고 :

MEDER의 대답에 매우 simiar
:%s!foo/bar/baz!foo/bar/boz!g 

...하지만, 나는 느낌표가 구분 기호로 볼 수있는 훨씬 더 쉽게는 사실을 알게 될 것입니다. 그리고 저는이 방법이 Mac OSX Mavericks에서 사용하고있는 VIM의 현재 버전에서 여전히 작동하는지 확인하기를 원합니다.

2

당신은 레지스터에 패턴을 검색하는 경우

를 검색 할 ?을 사용할 수 있으며, 패턴, 당신은 단순히 패턴 매칭을 시작하는 일반 모드에서 대신 / 명령의 ? 명령을 사용할 수있는 '/'문자가 포함 . 이 경우 '/'char에 대한 이스케이프가 필요하지 않습니다.

?/의 반대 방향으로 검색합니다 (그러나 당신은 지금 '?'탈출 문자가 필요), 그래서 당신은 검색 방향을 마음, 그리고하지 않을 경우 검색 패턴을 포함하지 않는 '?' 숯.

더 많은 정보가 필요하면 escape() 스크립트를 확인하십시오.

+0

Genius! 나는 ('/'로) 검색 만하고 바꾸지 않았으므로, 변경할 구분 기호가 없었습니다. – Noumenon