当我不包括/
in 时WORDCHARS
,即:
WORDCHARS='~!#$%^&*(){}[]<>?.+;-'
Run Code Online (Sandbox Code Playgroud)
然后kill-word
按需要工作:使用Alt+ d,我可以删除文件系统路径的一部分(在每个 处停止/
)。
但是当使用Ctrl+Right和Ctrl+ 时Left,我希望有不同的行为:我不希望光标停在每个/
. 我想跳过整个路径作为一个词。
我可以WORDCHARS
只为forward-word
and使用不同的backward-word
吗?
您可以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
Run Code Online (Sandbox Code Playgroud)
或重新定义{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
Run Code Online (Sandbox Code Playgroud)
另请参阅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
Run Code Online (Sandbox Code Playgroud)
您将获得*ward-word
和backward-kill-word
小部件的基于“空间”的字样,以及其他字小部件的Alt+Z初始“正常”$WORDCHARS
字样。