a-zA-Z 이상의 문자를 포함하는 단어 일치 들어 prästgården을

단어를 일치시키기 위해 사용할 수 있습니다

\v(\w+)

vim 도움말에서 :h \w:

\ w 단어 문자 : [0-9A-Za-z_]

이것은 설명서에 설명 된대로 정확하게 작동합니다. 그러나, 나는 넘어 문자가 포함 된 단어와 일치 할 a-z, 예를 들어
prästgården을 . prästgården\v(\w+) 에 대해 정규 표현식 을
일치 시키면 세 개의 일치 항목이 생성됩니다.

prästgården
^^ ^^^ ^^^^

넘어 문자를 포함하는 단어를 일치시키는 방법 a-z? 내 로케일은 영어로 설정되어 있으며 가능하면 그대로 유지하고 싶습니다.

편집 : 단어가 단일 로케일에 속하지 않을 수 있습니다 (예 :

prästgården
treść


답변

Vim (버전 7.3 현재)은 패턴에서 비 ASCII 문자 지원과 관련하여 매우 제한적입니다. 특히 \wASCII 문자 만 일치하며 유용성이 제한됩니다.

유니 코드를 지원하는 몇 가지 문자 클래스 패턴이 있습니다. 당신이 관심의에 \I, 어떤 문자와 문자, 플러스 전반적으로 일치 _하고 @. 적어도 데비안 스퀴즈 (UTF-8 로켈에서)에는 오류가 있습니다. 예를 들어 ×과는 ÷문자로 일치하지만, 모든 라틴 문자가 제대로 recognied 것 같다 악센트. 적어도 ASCII 부분에 대해서는 옵션을 \I통해 구성 할 수 있습니다 isident.

심각한 유니 코드 지원을 원하면 외부 도구를 사용해야합니다. 예를 들어 perl -C -e '/\p{L}/'UTF-8 문자를 일치 시키려면 (UTF-8 로케일 가정)


답변

사용하십시오 \k. iskeyword옵션을 참조하십시오 .


답변

키릴 어에도 적용됩니다.

\v\k

키릴 문자로 조금 더 복잡하고 실패

\v(\c[0-9a-z_[=a=][=c=][=e=][=i=][=l=][=n=][=o=][=r=][=s=][=t=][=u=][=y=][=z=]])

문서 .

Vim 7.4에서 테스트되었습니다.