Zsh
帶有 fzf 選擇的 zsh 功能需要 Enter
我寫了一個簡單的 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
?
fzf-change-dirstack () { local dir print -rNC1 -- $dirstack | fzf --read0 --print0 | IFS= read -rd '' dir && cd -- $dir && zle -I } zle -N fzf-change-dirstack bindkey '^[p' fzf-change-dirstack # shortcut ALT+P
要點是
zle -I
在I
目前工作目錄發生更改時驗證提示,其餘部分修復程式碼中的一些其他問題,以便它可以使用任意目錄名稱。
cd +``Tab
另請注意,當您完成或僅完成 dirstack 元素作為任何命令的參數時, zsh 已經有自己的 dirstack 完成~+``Tab
程序,而不僅僅是cd
/pushd
。例如,嘗試
cd +``Tab``Tab
:zstyle ':completion:*' format 'Completing %d' zstyle ':completion:*' menu select=2 autoload compinit compinit
並使用箭頭鍵導航。
(這種設置你通常會調整
compinstall
)