2014-12-12 1 views
0

나는 다음과 같이 match 함수에서의 \ V 및 단어 경계를 결합 할 문제가 있습니다vim 스크립트 일치하는 단어 경계와 의 V를 결합

let index = match(line, "\\<\V".pattern."\v\\>") 

다음은 완벽하게 작동합니다

let index = match(line, "\\<".pattern."\\>") 

아무도 그 두 가지를 결합하는 방법을 알고 있습니까?

답변

2

\V이더라도 백 슬래시는 여전히 특별한 의미가 있으므로 \<...\>은 계속 작동해야합니다. 나는 개인적으로 전면에 \V을두고, 백 슬래시를 두 배로 피하기 위해 작은 따옴표를 사용합니다 :

let index = match(line, '\V\<'.pattern.'\>') 

난 당신이 전체 단어로 pattern의 모든 문자 텍스트와 일치하는 의도 같아요. 그렇게하려면 백 슬래시를 벗어나야합니다. 이것은 일반적으로 어떻게하는지입니다 : pattern 키워드 문자로 시작/끝하지 않는 경우

let index = match(line, '\V\<'.escape(pattern, '\').'\>') 

이 일치하는 데 실패 할 수 있다는 이유입니다. 이를 처리해야하는 경우 먼저 pattern을 확인하고 \<\>을 조건부로 추가해야합니다. (수표는 \k와 일치하여 수행 할 수 있습니다.)

+0

이것은 완벽하게 작동했습니다! 고맙습니다. 실제로 전에 이것을 시도했지만, 패턴이 잘리지 않았고 마지막에 공간이 있다는 또 다른 문제가있었습니다! – tuxtimo