Vim에서 두 개의 유사한 문자열 중 하나를 검색하는 방법은 무엇입니까?


29

Vim에서 "planA"또는 "planB"와 일치하는 검색을 수행하려면 다음을 수행 할 수 있습니다.

/plan[AB]

정규식은 A 또는 B를 문자 집합으로 허용하기 때문에 작동합니다.

그러나 두 개의 완전한 문자열 중 하나를 어떻게 지정할 수 있습니까? 예를 들어 "planetAwesome"또는 "planetTerrible"?

이것은 "planetAnythingHereAsLongAsItsJustLetters"와 함께이 두 가지와 일치합니다.

planet\([a-zA-Z]*\)

"planetAwesome"또는 "planetTerrible"과 정확히 일치 하는 문자열 어떻게 일치시킬 수 있습니까?


실제로 대괄호는 문자 클래스를 만듭니다. plan[ABC]일치 planA, planB그리고 planC동일하게.
Christopher Bottoms

@molsecules-고마워요. 질문을 업데이트했습니다.
Nathan Long

답변:


43
/planet\(Awesome\|Terrible\)

관련 문서를 보려면을 발행 :help /하고“패턴 정의”섹션으로 스크롤하십시오.


1
아! 나는 이것을 시도했을 때 괄호를 피하지 않았다. 흥미 롭다 – 나는 문자 그대로 피해야한다고 생각했다.
Nathan Long

1
@Nathan : 다양한 정규식 엔진에는 문자를 특수 문자로 만들기 위해 이스케이프해야하는 문자와 문자 그대로 문자로 만들기 위해 이스케이프해야하는 문자에 대한 규칙이 다릅니다 (예 : POSIX BRE vs. ERE). 당신은 특별 탈출 중 하나를 포함하여 당 패턴을 기준으로 빔에서 탈출 요구 사항을 조정할 수 : \m, \M, \v, 또는\V . 'magic'옵션 도 있지만 전역 효과 (위의 플래그 중 하나에 의해 재정의되지 않은 경우)가 있으므로 일반적으로 혼자 두는 것이 가장 좋습니다.
Chris Johnsen

1
사용이 매우 마술은 다음과 같이 보인다 :/\vplanet(Awesome|Terrible)
SergioAraujo

4

Gilles의 답변에 추가하기 위해 몇 가지 사항을 추가 할 수 있습니다.

/\<planet\(Awesome\|Terrible\)\>

\<'단어'(본질적으로 영숫자)의 시작을 표시합니다. '단어'(본질적으로 영숫자)
\>의 끝을 표시합니다.

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