zsh: kill-word와 앞으로-단어/뒤로-단어에 대해 다른 WORDCHARS를 사용합니다.

zsh: kill-word와 앞으로-단어/뒤로-단어에 대해 다른 WORDCHARS를 사용합니다.

/에 포함하지 않으면 WORDCHARS다음과 같습니다.

WORDCHARS='~!#$%^&*(){}[]<>?.+;-'

그런 다음 kill-word원하는 대로 작동합니다. Alt+를 사용하면 d파일 시스템 경로의 일부를 제거할 수 있습니다(각각에서 중지 /).

하지만 Ctrl+ RightCtrl+를 사용할 때 Left다른 동작을 원합니다 . 커서가 각각에서 멈추는 것을 원하지 않습니다 /. 한마디로 전체 경로를 건너 뛰고 싶습니다.

와 에 다른 값을 사용해 WORDCHARS도 되나요 ?forward-wordbackward-word

답변1

bind위젯을 사용하여 vi-{back,for}ward-blank-word다음을 수행할 수 있습니다 Ctrl+{left,right}.

bindkey $'\E[1;5D' vi-backward-blank-word
bindkey $'\E[1;5C' vi-forward-blank-word

또는 {back,for}ward-word다른 위젯을 사용하도록 위젯을 재정의합니다 WORDCHARS(예를 들어 해당 위젯을 사용하는 다른 바인딩에 영향을 미칩니다 Alt+{B,F}).

WORDCHARS='~!#$%^&*(){}[]<>?.+;-'
MOTION_WORDCHARS='~!#$%^&*(){}[]<>?.+;-/'

''{back,for}ward-word() WORDCHARS=$MOTION_WORDCHARS zle .$WIDGET
zle -N backward-word
zle -N forward-word

당신은 또한 볼 수 있습니다info zsh select-word-style프레임워크가 동적으로 선택되도록 활성화폰트.

또한 이를 사용하여 다양한 위젯에 대해 다양한 텍스트 스타일을 선택할 수 있습니다. 예를 들면 다음과 같습니다.

autoload -U select-word-style
zle -N select-word-style
bindkey '\ez' select-word-style

WORDCHARS='~!#$%^&*(){}[]<>?.+;-' # for the "normal" style
select-word-style normal
zstyle ':zle:*ward-word' word-style space
zstyle ':zle:backward-kill-word' word-style space

*ward-word및 위젯에는 "공백" 기반 텍스트 스타일이 적용되고 backward-kill-word다른 텍스트 위젯에는 Alt+Z원래 "일반" "공백" 기반 텍스트 스타일이 적용됩니다.$WORDCHARS

관련 정보