
Ich habe meins erfolgreich angepasst, zsh
damit es genau so funktioniert, wie WORDCHARS
ich es möchte. Beim Springen, Löschen oder automatischen Vervollständigen von Wörtern springt es jedoch an den Anfang jedes Worts. Mir wäre es lieber, wenn es stattdessen ans Ende der Wörter springen würde.
Wenn Sie beispielsweise im folgenden Befehl mit backward-word
und springen forward-word
, springt der Cursor an die Positionen, die durch die ^
folgenden Zeichen markiert sind:
$ kubectl --context stage --namespace kube-system get pods
^ ^ ^ ^ ^ ^ ^ ^ ^
Mir wäre es viel lieber, wenn zsh stattdessen wie folgt an das Ende der Wörter springen würde:
$ kubectl --context stage --namespace kube-system get pods
^ ^ ^ ^ ^ ^ ^ ^
Ist das konfigurierbar?
Antwort1
Bitte schön:
# Replace `forward-word` with `emacs-forward-word`. Problem solved.
zle -A emacs-forward-word forward-word
# For `backward-word`, it's a bit more complex. We'll have to
# create a new widget for this.
zle -N backward-word backward-word-end
backward-word-end() {
# Move to the beginning of the current word.
zle .backward-word
# If we're at the beginning of the buffer, we don't need to do
# anything else.
(( CURSOR )) ||
return
# Otherwise, move to the end of the word before the current one.
zle .backward-word
zle .emacs-forward-word
}
Bei dieser Version von backward-word
gibt es einige Randfälle, bei denen es sich intuitiv so anfühlen kann, als würde der Cursor etwas zu weit springen, wenn er rechts neben einer großen Anzahl von Nicht-Wortzeichen steht. Aber für den Testfall, den Sie oben vorgestellt haben, funktioniert es genau richtig.
Für noch bessere Wortbewegungs- und Anpassungsoptionen schau dir mein Plugin anZsh Bearbeiten.