vim은 단어가 무엇이라고 생각하나요? [복사]

vim은 단어가 무엇이라고 생각하나요? [복사]

중복 가능성:
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. 커서를 ttreść에 놓고 다음을 누르십시오 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까지의 문자도 포함됩니다.

관련 정보