Eu tenho o zsh 5.8.1 rodando no Ubuntu 22.04. Quando tenho algum texto no prompt e digito Ctrl+ u, ele limpa a linha conforme o esperado. No entanto, quando eu digito Ctrl+ y, ele exibe apenas
$ ^Y
O que poderia estar fazendo com que o buffer readline não fosse colado?
Aqui está o meu .zshrc:
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME=""
plugins=(
colored-man-pages
colorize
git
zsh-autosuggestions
zsh-interactive-cd
vi-mode
)
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
source $ZSH/oh-my-zsh.sh
unalias ls
unalias ll
unalias lsa
unalias gst
alias gs='git status'
alias gcob='git checkout -b'
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
bindkey "^[." insert-last-word
_sig_array=($(kill -l))
_return_status() {
ret=$?
if [ $ret -ne 0 ]; then
if [ $ret -le 128 ]; then
echo $ret
else
sig=$(( $ret - 128 ))
desc=$_sig_array[sig]
if [ "$desc" != INT -a "$desc" != TSTP ]; then
echo SIG$desc
fi
fi
fi
}
_return_status_formatted() {
out=$(_return_status)
if [ -n "$out" ]; then
echo "%F{red}[$out]%f "
fi
}
_current_branch_formatted() {
out=$(current_branch)
if [ -n "$out" ]; then
if [ -n "$(git status -s | grep -v '^\?')" ]; then
color=magenta
else
color=cyan
fi
echo "%F{$color}(git:$out)%f "
fi
}
export PS1='%F{blue}%n%f@%F{green}%m%f:%F{red}%~%f $ $(_return_status_formatted)$(_current_branch_formatted)'
zsh
usarávi
combinações de teclas por padrão se a variável$EDITOR
ou$VISUAL
contivervi
(então assume que você preferevi
).^Y
para colar é uma ligação de chave emacs (ovi
equivalente seriap
/P
).Adicione um:
para o seu
~/.zshrc
para indicar que você deseja combinações de teclas do emacs, independentemente de sua escolha de editor (o mesmo que emtcsh
). Ouset -o emacs
(o mesmo que em ksh).Algumas outras notas sobre o seu
~/.zshrc
:já está lá por padrão no
emacs
modo, então você não precisa disso.Já existe um
$signals
array embutido (cuidado, ele começa emEXIT
== 0, então você precisa$signals[signum+1]
pegar o nome do número).Comportamento para
grep -v '^\?'
não especificado. Usegrep -v '^?'
para remover as linhas que começam com?
, ougrep -v '^\\?'
para remover as que começam com\?
.É um bom hábito declarar variáveis
local
para suas funções se elas não forem globais.Veja também
[[ $desc = (INT|TSTP) ]] || echo SIG$desc
.Geralmente, como em outros shells, o
-a
operador do[
builtin é obsoleto.Aqui, você pode usar
((...))
consistentemente: