我在和魚玩耍時注意到了這個方便的行為
如果我輸入wget -<tab><tab><tab>
,我就會進入互動式選單。然而,當我打字時,我搜尋了參數本身的描述。我在 zsh 中嘗試過這個,在這個選單中輸入似乎只會讓我回到互動式提示符。有沒有辦法在zsh中實現類似的功能?
答案1
嘗試將其放入您的.zshrc
文件中:
# load module for list-style selection
zmodload zsh/complist
# use the module above for autocomplete selection
zstyle ':completion:*' menu yes select
# now we can define keybindings for complist module
# you want to trigger search on autocomplete items
# so we'll bind some key to trigger history-incremental-search-forward function
bindkey -M menuselect '?' history-incremental-search-forward
現在,如果您鍵入wget -<tab>
具有自動完成功能的選單,則會出現。我們為此選單定義了按鍵綁定,因此如果您按下?
搜尋線,則會出現在補全的頂部:
davidsykora~%wget --referer
isearch: refe
一些額外的提示:
- 您也可以定義
bindkey -M menuselect '/' history-incremental-search-backward
向後搜尋 - 如果您
?
在搜尋過程中再次按下,選擇將跳到下一個搜尋結果。用於/
跳到上一個結果 - 需要進行大量調整才能使其按您想要的方式工作,所以請看一下
complist
文件尋找附加功能和選項 - 對我來說,使用
vi-insert
complist 函數通常要快得多 - 它根據您輸入的內容過濾補全。
答案2
我認為這符合你的要求:
zmodload zsh/complist
setopt menucomplete
zstyle ':completion:*' menu select=0 search
這將導致當您點擊選項卡時顯示列表,然後如果您繼續鍵入,它將透過增量搜尋來搜尋可用選項,包括描述。
您可能也對相同的配置感興趣,但使用互動式而不是搜尋。在這種情況下,當您鍵入時,它會將補全內容過濾為僅與您迄今為止鍵入的內容相符的補全內容。