Shell
使用 fd 列出主文件夾中的所有目錄
我正在嘗試使用and程序編寫一個 shell 函式以快速
cd
進入我的主文件夾中的任何目錄。fd``fzf
這是我到目前為止所擁有的
function fdcd() { cd "$(fd --type d --ignore-file ~/.config/fd/ignore --hidden | fzf)" }
這有兩個問題:
1)它只列出了我目前工作目錄中包含的目錄,而不是我的主文件夾中的每個目錄;
- idk 如果這是我的 shell 的錯,但是在我使用此命令後,我的 shell 提示符不會立即更新到新目錄,而是我必須先發出一個命令(甚至是空白命令)才能更新它,即惱人的。
任何幫助表示讚賞。
fdcd() { local dir dir=$( cd && fd -0 --type d --ignore-file ~/.config/fd/ignore --hidden | fzf --read0 ) && cd ~/$dir }
至於為什麼您的提示沒有自動更新,請注意,只有在您進入行編輯器或當 zle 小元件明確要求重繪(
reset-prompt
/clear-screen
小元件)或在無效後返回時,才會重新計算和重新繪製提示顯示 (zle -I
) 或當 shell 處理一些非同步事件時。因此,如果該
fdcd
函式旨在作為自定義小元件或作為自定義zle
小元件的一部分呼叫,則如果您希望將目錄更改反映在提示中,則需要要求重新計算提示:fdcd() { local dir dir=$( cd && fd ${NUMERIC:+-d$NUMERIC} -0 --type d \ --ignore-file ~/.config/fd/ignore --hidden | fzf --read0 ) && cd ~/$dir || return if zle; then # allow fdcd to run inside and outside zle zle reset-prompt fi } zle -N fdcd bindkey '\es' fdcd
這裡還使用
$NUMERIC
參數來限制搜尋的深度,因此您鍵入Alt
++例如將搜尋限制為深度 22
Alt
。S