有時,指令沒有安裝補全功能,或在語法上可以接受一大堆類型的參數,使補全功能幾乎毫無用處。例如,「git checkout」可以採用任何 git 追蹤檔案的名稱或者任何引用或其他樹的名稱。它還可以採用一些選項標誌。有很多可能的完成。
知道我想要完成(例如)一個分支名稱,有沒有辦法綁定一個鍵來完成或顯示分支名稱選單? (對於任何完成類別也是如此。)
這似乎是可能且有用的,但我還沒有看到它被完成。
答案1
是的,這是可以做到的。我最初從 zsh 郵件列表之一收到以下內容,但我不記得是誰發布的:
zle -C complete-file complete-word _generic
zstyle ':completion:complete-file::::' completer _files
bindkey '^x^f' complete-file
這可以很容易地適應使用不同的完成函數而不是_files
.
第一行定義了一個名為的新完成小部件complete-file
,其行為類似於內建小complete-word
部件,並使用該_generic
函數產生完成清單。
然後,第二行對其進行配置,以便在使用該自訂小工具時,完成器將僅用於_files
取得完成清單。
然後第三行將新的小部件綁定到按鍵序列。