我写了一个简单的 zsh 函数,它允许我从dirs-stack
via中进行选择fzf
。
我的.zshrc
样子
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
即使必须进行一些改进,它也能正常工作。唯一对我来说非常烦人的是,当我使用键绑定时,我必须键入Enter两次才能切换到目录。
如何在cd
不再次输入两次的情况下立即修改脚本Enter?
要点是
zle -I
在I
当前工作目录发生更改时验证提示,其余部分修复代码中的一些其他问题,以便它可以使用任意目录名称。cd +
Tab 另请注意,当您完成或仅完成 dirstack 元素作为任何命令的参数时, zsh 已经有自己的 dirstack 完成~+
Tab程序,而不仅仅是cd
/pushd
。例如,尝试
cd +
TabTab:并使用箭头键导航。
(这种设置你通常会调整
compinstall
)