Eu escrevi uma função zsh simples que me permite selecionar dirs-stack
via fzf
.
Meu .zshrc
parece
DIRSTACKSIZE='99'
setopt PUSHD_IGNORE_DUPS
# change to directory from the dirs stack
fzf-change-dirstack () {
cd "$(dirs -lv | cut -f2 | fzf )"
}
zle -N fzf-change-dirstack
bindkey '^[p' fzf-change-dirstack # shortcut ALT+P
Funciona bem, mesmo algumas melhorias precisam ser feitas. A única coisa que é muito chata para mim é que quando eu uso o atalho de teclado eu tenho que digitar Enterduas vezes para mudar para o diretório.
Como posso modificar o script cd
imediatamente sem digitar duas vezes Enternovamente?
O ponto principal é nvalidar
zle -I
oI
prompt quando o diretório de trabalho atual for alterado, o resto corrigindo alguns outros problemas em seu código para que ele possa funcionar com nomes de diretório arbitrários.Observe também que zsh já tem seu próprio dirstack completer quando você completa
cd +
Tab ou apenas~+
Tabpara completar elementos dirstack como argumento para qualquer comando, não apenascd
/pushd
.Por exemplo, tente
cd +
TabTabdepois:E navegue com as setas do teclado.
(este tipo de configuração você geralmente sintoniza
compinstall
)