Zsh
zsh:對kill-word和forward-word/backward-word使用不同的WORDCHARS
當我不包括在內
/
時WORDCHARS
,即:WORDCHARS='~!#$%^&*(){}[]<>?.+;-'
然後
kill-word
按需要工作:使用Alt
+d
,我可以刪除部分文件系統路徑(停在每個/
)。但是當使用
Ctrl
+Right
和Ctrl
+時Left
,我希望有不同的行為:我不希望游標停在每個/
. 我想一個字跳過整個路徑。我可以
WORDCHARS
只對forward-word
and使用 differentbackward-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
或重新定義
{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
其他單詞小元件的基於 - 的單詞樣式。