; 그것에 관한 :help iskeyword
을 보라. 기본적으로 쉼표로 구분 된 개별 문자 또는 범위로 주어진 문자 목록으로 구성됩니다. 다양한 구문 파일이이 언어를 다른 언어로 수정하여 식별자별로 이동하도록합니다. 이 정규 표현식을 지정할 수있는 것처럼 보이지 않습니다. 그들이 다시 프로그램 할 수있는 것처럼 및 E W 같은
대문자의 움직임은 보이지 않습니다. 'WORD'의 정의는 공백으로 구분 된 공백이 아닌 문자와 각 빈 줄이 "WORD"로 계산됩니다.
그러나 불행히도 iskeyword
문자는 입력을 iskeyword
문자 (iskeyword
문자 및 공백)의 시퀀스로 단순히 분리하는 동작이있는 것처럼 보입니다. w 및 관련 명령을 사용하면 공백을 건너 뛰지 만 iskeyword
토큰과 iskeyword
토큰을 모두 방문합니다.
:map
그냥 /
또는 ?
키 입력 순서가 모두 시각 및 명령 모드에서 작동을 사용하여 다시 매핑 :
그것은
/
및
?
검색은 두 모드에서 작동하므로이 두 작품
:map w /\<\w/^M
:map b ?\</\w^M
:map e /\w\>^M
. 물론, 현재 검색 패턴을 파헤 치고 :set hls
(highlightsearch
)을 사용하는 경우 단어의 팁/꼬리가 강조 표시되므로 추한 솔루션입니다.
위의 검색은 앵커 링 연산자가 작동하는 방식 때문에 매우 만족스럽지 않습니다. 예를 들어 {abc
또는 (abc
과 같이 a
에 '착륙'할 수 없습니다.
다음 매핑이 더 효과적입니다. 각각은 여러 검색을 트리거합니다. /.
및 ?.
검색은 다음 또는 이전 문자로 이동하는 트릭으로 사용되므로 행의 마지막 문자에있는 경우 다음 행의 첫 번째 문자로 이동하고 그 반대의 경우도 마찬가지입니다.
:map b ?\w^M?\W^M/.^M
:map w /\W^M/\w^M
:map e /\w^M/\W^M?.^M
몇 가지 단점이 있습니다. 예를 들어, 단어 목록 좋아 :
abc
def
ghi
는 단어가 아닌 클래스 \W
에 대한 일치가 포함되어 있지 않습니다. 일치에는 줄 끝이 포함되어야합니다.더 나아가,이 점에서 하나 w에 대한 개선은 다음과 같이 끝 라인에 해당하는 경기를 추가하는 것입니다
:map w /\(\W\\|$\)^M/\w^M
주 배관 전에 이중 백 슬래시! 가장 오른쪽의 백 슬래시는 파이프를 이스케이프 처리하므로 :map
명령을 처리해도 명령 구분 기호로 처리되지 않습니다. 그런 다음 우리는 분기를위한 정규 표현식 연산자 인 \|
을 남겨 둡니다. 비슷한 맥락에서 다른 두 매핑은 향상 될 수 있습니다. 나는 그것을 운동으로 남겨두고있다.
출처
2016-10-06 20:37:29
Kaz
이것은 정확히 내가 찾은 것입니다. 정상, 시각 및 운영자 계류 모드는 정상적으로 작동합니다. 감사. – Evgeniy