vim 명령 행에서 perl 정규식을 사용할 수 있습니까?


27

vim 명령 줄에서 perl 정규식을 사용하고 싶습니다. 예를 들어, 현재 줄의 단어를 대문자로 입력하려면 다음을 입력하십시오.

:s/(\w+)/\u$1/g

From : help perl-patterns ... Vim의 정규식은 할 수있는 일면에서 Perl과 가장 유사합니다. 그들 사이의 차이점은 주로 표기법 입니다. 어떻게 의사 소통 할 수 있는지에 관해서는 중국어가 그리스어와 비슷하다고 말하는 것과 같습니다. 차이점은 대부분 단지 표기법입니다. 정규식은 아무것도 하지만 표기법! 한 표기법이 다른 표기법보다 친숙하지 않으면 차이점이 성가시다. 그래서 사람들이 처음부터 펄에 대해 묻는 이유입니다!
dreftymac

답변:


19

!를 사용하여 vim의 외부 명령을 통해 모든 라인 또는 라인 범위를 필터링 할 수 있습니다. 예를 들어 다음을 수행 할 수 있습니다.

:.!perl -pe "s/(\w+)/\u\1/g"

이것은 perl 명령을 통해 현재 행을 필터링합니다. ( :명령 행 모드로 들어가기 위해 .다음 행은 현재 행을 의미합니다. 행 범위 또는 %전체 파일 등을 지정할 수도 있습니다 .)

vim의 내장 대체 패턴을 사용하려면 vim의 "매우 마술"옵션 인 \ v를 사용하십시오.

:s/\v(\w+)/\u\1/g

참조 :help pattern:help substitute자세한 내용은. 나는 "매직 매직"이 펄의 패턴과 상당히 동일하다고 생각하지는 않지만 매우 가깝습니다. 어쨌든, 위와 같이 더 편안하다면 펄 자체를 항상 사용할 수 있습니다.


1
또한, 매우 마법, 당신이 기억하지 않아도 (동안 특별히 처리 {되지 않습니다 : " '0'을 제외한 모든 ASCII 문자 - '9', 'A'- 'Z', 'A'- 'Z'와 '_'에는 특별한 의미가 있습니다. " 감사!
Ayrat

10

아니요, 그런 식으로 Perl 정규식을 사용할 수 없습니다. Perl 정규 표현식 구성 요소에 대한 Vim 등가 학습에 대한 도움말은

:help perl-patterns

그러나 frabjous에서 설명한대로 Perl을 외부 필터로 사용할 수 있습니다. Vim이 +perl기능 으로 컴파일 된 경우 Perl 인터페이스를 사용하여 Vim 내에서 Perl 명령을 실행할 수도 있습니다. 만나다

:help if_perl.txt

2
하나는, :help perl-patterns내가 이전에 정력에 대해 싫어 한 가지를 해결했다
마크 K 코완을

8

다음을 사용할 수도 있습니다.

/\v"your regex"

대신에:

/"your regex"

이것이 내가 찾던 대답입니다!
alextercete

또한 추가하여 자신을 도울 수 nnoremap / /\vvnoremap / /\v입력 할 때 있도록의 .vimrc에 /그냥 작동합니다.
mattmc3


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