Eu tenho um widget zle como:
_ctrl-a() {
CURSOR=0
if ((MARK == 0)); then
zle set-mark-command
fi
if [ "$BUFFERLINES" -gt 1 ]; then
zle end-of-buffer-or-history
else
zle end-of-line
fi
}
zle -N _ctrl-a
bindkey '^A' _ctrl-a # Ctrl+A
Ele seleciona todo o buffer. Quero dizer, coloque o cursor no início do buffer, comece a marcar e coloque o cursor no final do buffer.
Aqui, o widget que estou usando para o comando de várias linhas é end-of-buffer-or-history
, no entanto, eu quero que seja end-of-buffer
.
Então, eu quero substituir:
if [ "$BUFFERLINES" -gt 1 ]; then
zle end-of-buffer-or-history
else
zle end-of-line
fi
com
zle end-of-buffer
Mas parece não haver widget para arquivos end-of-buffer
.
O que posso fazer?
PS Seria uma boa experiência de aprendizado se eu pudesse selecionar todo o buffer usando MARK
variável.
No código do widget , você pode não apenas ler, mas também modificar variáveis como
MARK
,CURSOR
,BUFFER
, etc.Para mover o cursor para o final do buffer:
Para selecionar todo o buffer com a marca no início e o cursor no final, não é necessário chamar nenhum widget: basta definir as variáveis apropriadas.