Vim에서 여러 줄 정규식 지원


116

여러 줄에 걸쳐 일치하는 표준 정규식 구문은 / s를 사용하는 것입니다.

This is\nsome text
/This.*text/s

예를 들어 Perl에서는 작동하지만 Vim에서는 지원되지 않는 것 같습니다. 대신에 훨씬 더 구체적이어야합니다.

/This[^\r\n]*[\r\n]*text/

왜 이것이되어야하는지에 대한 이유를 찾을 수 없으므로 아마도 vim 도움말에서 관련 부분을 놓친 것 같습니다.

누구든지이 행동을 어떤 식 으로든 확인할 수 있습니까?

답변:


176

예, Perl의 //s수정자는 Vim 정규식에서 사용할 수 없습니다. 자세한 :h perl-patterns내용과 Vim과 Perl 정규식의 다른 차이점 목록은를 참조하십시오.

대신 \_."개행 문자를 포함한 단일 문자 일치"를 의미하는을 사용할 수 있습니다 . 당신이 가진 것보다 약간 짧습니다. 을 참조하십시오 :h /\_..

/This\_.*text/

4
멋져요-제 삶이 조금 더 쉬워졌습니다. 나는 (. | \ n) *
ojrac

2
:h /\_.do 에서 슬래시는 무엇입니까 ? 내 말은, 나는 그것이 작동한다는 것을 알고 있지만 왜 :h /\_.작동하지 :h \_.않습니까?
Eddified

2
@Eddified 슬래시 (검색의 기본 키)는 다음 \_.과 같이 읽을 수 있는 컨텍스트를 지정합니다 . 검색 표현식에 대한 도움을주세요\_.
Florian

그런데 괄호 안에 넣어도이 표현으로 게으른 매칭을 할 수없는 것 같나요? 할 방법이 있습니까?
xji

2
게으른 경기 @JIXiang foo bar \n foo baz \n foo, 시도/foo\_.\{-}foo
제임스 M. 레이
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.