
Я успешно настроил my, zsh
чтобы он обрабатывал то, что WORDCHARS
мне нужно. Однако при переходе, удалении или автодополнении слов он переходит к началу каждого слова, я бы предпочел, чтобы он переходил к концу слов.
Например, в следующей команде при переходе с использованием backward-word
и forward-word
курсор переходит на позиции, отмеченные символами ^
ниже:
$ kubectl --context stage --namespace kube-system get pods
^ ^ ^ ^ ^ ^ ^ ^ ^
Я бы предпочел, чтобы zsh переходил к концу слова, а не вот так:
$ kubectl --context stage --namespace kube-system get pods
^ ^ ^ ^ ^ ^ ^ ^
Возможно ли это настроить?
решение1
Ну вот:
# 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
}
Для этой версии backward-word
есть некоторые крайние случаи, когда, если курсор расположен справа от большого количества несловных символов, может интуитивно казаться, что он прыгает слишком далеко. Но для тестового случая, который вы представили выше, это работает совершенно правильно.
Для еще лучшего перемещения слов и возможностей настройки ознакомьтесь с моим плагиномЗш Редактировать.