중복 가능성:
a-zA-Z 이외의 문자가 포함된 단어와 일치합니다.
vim
단어의 정의를 이해하지 못합니다 . 모션 도움말 w
( :h w
):
w [앞으로 세기] 단어. |독점|스포츠. 이 명령은 단어나 단어 위로 이동합니다.
*word*
단어는 일련의 문자, 숫자 및 밑줄 또는 공백(공백, 탭, )으로 구분된 공백이 아닌 기타 문자의 시퀀스로 구성됩니다. 이는 "iskeyword" 옵션을 사용하여 변경할 수 있습니다.
이는 내가 w
작업을 호출할 때 vim이 이 옵션을 사용하여 어떤 문자가 단어를 구성할 수 있는지 확인해야 함을 의미합니다 iskeyword
. 단어가 어떤 문자로 구성되어 있는지 확인해 보겠습니다.
:set iskeyword?
iskeyword=@,48-57,_,192-255
iskeyword
예를 들어 옵션에 나열된 문자에 포함되지 않은 문자로 테스트해 보겠습니다 U+015B LATIN SMALL LETTER S WITH ACUTE
. ga
를 누르면 ś
십진수 값이 347이며 이는 255보다 크므로 범위를 벗어납니다
iskeyword
. 커서를 t
treść에 놓고 다음을 누르십시오 w
.
treść bar
^ (cursor)
결과:
treść bar
^ (cursor)
단어로 구성될 수 있는 경우문자, 숫자, 밑줄 등유일한 가능성은 vim이 그것을 다음 ś
과 같이 취급한다는 것입니다.편지, 분명히 숫자나 밑줄이 아니기 때문입니다. 문자가 문자인지 확인하는 방법을 확인해 보겠습니다. 에서 :h :alpha:
:
다음 문자 클래스가 지원됩니다. [:α:] [:alpha:] 글자
테스트하다
/[[:alpha]]
표시는 ś
문자로 간주되지 않습니다.
문자, 숫자, 밑줄도 아니고 나열되지 않은 b
경우 커서가 이동하는 이유는 무엇입니까 ?ś
iskeyword
VIM에서 테스트됨 - Vi IMproved 7.3(2010년 8월 15일, 2012년 12월 27일 21:21:18 컴파일) 패치 포함: Debian GNU/Linux의 1-762, locale
en_GB.UTF-8
.
답변1
그 이유는 Ulrich가 자신의 의견에서 언급했듯이 멀티바이트 문자가 항상 단어의 일부로 간주되기 때문입니다. 에서는 지정할 필요가 없습니다 iskeyword
. :h iskeyword
도움말을 인용하면 다음과 같습니다 :h isfname
.
항상 256자 이상의 멀티바이트 문자를 포함하고 최대 255자까지 지정하려면 이 옵션만 사용하십시오. UTF-8의 경우 0xa0부터 0xff까지의 문자도 포함됩니다.