
Eu personalizei com sucesso o meu zsh
para lidar com o que WORDCHARS
eu quero. Porém, ao pular, excluir ou completar palavras automaticamente, ele salta para o início de cada palavra, eu preferiria que saltasse para o final das palavras.
Por exemplo, no comando a seguir, ao saltar usando backward-word
e forward-word
, o cursor salta para as posições marcadas pelos ^
caracteres abaixo:
$ kubectl --context stage --namespace kube-system get pods
^ ^ ^ ^ ^ ^ ^ ^ ^
Eu preferiria que zsh saltasse para o final das palavras assim:
$ kubectl --context stage --namespace kube-system get pods
^ ^ ^ ^ ^ ^ ^ ^
Isso é possível configurar?
Responder1
Aqui você vai:
# 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
}
Para esta versão do backward-word
, existem alguns casos extremos em que, se o cursor estiver posicionado à direita de uma grande quantidade de caracteres que não sejam palavras, pode parecer intuitivamente que ele vai longe demais. Mas para o caso de teste apresentado acima, funciona perfeitamente.
Para opções ainda melhores de movimentação de palavras e personalização, confira meu pluginEdição Zsh.