ZSH перейти к концу слова

ZSH перейти к концу слова

Я успешно настроил 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есть некоторые крайние случаи, когда, если курсор расположен справа от большого количества несловных символов, может интуитивно казаться, что он прыгает слишком далеко. Но для тестового случая, который вы представили выше, это работает совершенно правильно.


Для еще лучшего перемещения слов и возможностей настройки ознакомьтесь с моим плагиномЗш Редактировать.

Связанный контент