zsh 像魚一樣快速/不引人注目的自動建議。
它會根據歷史記錄和完成情況在您鍵入時建議命令。
需求:Zsh v4.3.11 或更高版本
請參閱 INSTALL.md。
當您鍵入命令時,您將看到遊標後面以柔和的灰色顯示的完成訊息。可以透過設定ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
變數來變更此顏色。請參閱配置。
如果您在遊標位於緩衝區末端時按→鍵( forward-char
小工具)或End ( end-of-line
工具),它將接受建議,並用建議取代命令列緩衝區的內容。
如果您呼叫forward-word
小部件,它將部分接受直到遊標移動到的位置的建議。
您可能想要覆蓋預設的全域配置變數。這些變數的預設值可以在此處找到。
注意:如果您使用 Oh My Zsh,則可以將此設定放在$ZSH_CUSTOM
目錄中的檔案中。請參閱他們對最重要的內部結構的評論。
設定ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
以配置建議顯示的樣式。預設值為fg=8
,它將前景色設為 256 色調色板中的顏色 8。如果您的終端僅支援 8 種顏色,則需要使用 0 到 7 之間的數字。
也可以設定背景顏色,建議的樣式可以是粗體、底線或突出。例如,這將在青色背景上顯示帶有粗體、下劃線、粉紅色文字的建議:
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE= " fg=#ff00ff,bg=cyan,bold,underline "
有關更多信息,請閱讀 zsh 手冊的字符突出顯示部分: man zshzle
或在線。
注意:有些 iTerm2 用戶報告無法看到建議。如果這影響到您,則問題可能是由不正確的顏色設定引起的。為了修正這個問題,進入 iTerm2 的設置,導覽至設定檔 > 顏色,並確保基本顏色 > 背景和 ANSI 顏色 > 亮黑色的顏色不同。
ZSH_AUTOSUGGEST_STRATEGY
是一個指定如何產生建議的陣列。依序嘗試數組中的策略,直到找到建議。目前有三種內建策略可供選擇:
history
:選擇歷史記錄中最近的比賽。completion
:根據製表符補全的建議選擇建議。 (需要zpty
模組,該模組自 4.0.1 起包含在 zsh 中)match_prev_cmd
:與history
類似,但選擇其前面的歷史記錄項目與最近執行的命令相符的最近匹配項(更多資訊)。請注意,對於不保留歷史順序的 ZSH 選項(例如HIST_IGNORE_ALL_DUPS
或HIST_EXPIRE_DUPS_FIRST
,此策略將無法如預期運作。例如,設定ZSH_AUTOSUGGEST_STRATEGY=(history completion)
將首先嘗試從歷史記錄中尋找建議,但是,如果找不到符合項,則會從完成引擎中尋找建議。
該插件的工作原理是在呼叫某些 zle 小部件時觸發自訂行為。您可以從這些陣列中新增和刪除小部件以更改此插件的行為:
ZSH_AUTOSUGGEST_CLEAR_WIDGETS
:此數組中的小部件將在呼叫時清除建議。ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
:此數組中的小部件將在呼叫時接受建議。ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
:此陣列中的小工具將在呼叫時執行建議。ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
:此數組中的小部件在呼叫時將部分接受建議。ZSH_AUTOSUGGEST_IGNORE_WIDGETS
:此陣列中的小部件不會觸發任何自訂行為。修改緩衝區且未在任何這些數組中找到的小部件將在呼叫後取得新建議。
注意:一個小部件不應屬於多個以上數組。
將ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
設定為整數值以停用大緩衝區的自動建議。預設值未設置,這表示將嘗試對任何緩衝區大小進行自動建議。建議值為 20。
在 zsh 版本 5.0.8 及更高版本中,預設會非同步取得建議。若要停用非同步建議並同步取得它們,請在取得外掛程式後unset ZSH_AUTOSUGGEST_USE_ASYNC
。
或者,如果您使用的 zsh 版本早於 5.0.8 並且想要啟用非同步模式,請在取得外掛程式後設定ZSH_AUTOSUGGEST_USE_ASYNC
變數(可設定為任何值)。請注意,早於 5.0.8 的 zsh 版本中存在一個錯誤,即ctrl + c在非同步獲取建議後無法立即重置提示。
設定ZSH_AUTOSUGGEST_MANUAL_REBIND
(可以設定為任何值)以停用每個 precmd 上的自動小工具重新綁定。這可以大大提高效能,但是如果任何小部件清單發生變更或您或另一個外掛程式包裝了任何自動建議小部件,您將需要自己處理重新綁定。若要重新綁定小工具,請執行_zsh_autosuggest_bind_widgets
。
將ZSH_AUTOSUGGEST_HISTORY_IGNORE
設定為 glob 模式,以防止提供與該模式相符的歷史記錄條目的建議。例如,將其設為"cd *"
以從不建議歷史記錄中的任何cd
指令。或設定為"?(#c50,)"
從不建議任何 50 個字元或更長的內容。
注意:這僅影響history
和match_prev_cmd
建議策略。
將ZSH_AUTOSUGGEST_COMPLETION_IGNORE
設定為 glob 模式,以防止在緩衝區與該模式相符時提供完成建議。例如,將其設為"git *"
以停用 git 子命令的完成建議。
注意:這僅影響completion
建議策略。
該插件提供了一些可以與bindkey
一起使用的小部件:
autosuggest-accept
:接受目前建議。autosuggest-execute
:接受並執行目前建議。autosuggest-clear
:清除目前建議。autosuggest-fetch
:取得建議(即使建議已停用也有效)。autosuggest-disable
:停用建議。autosuggest-enable
:重新啟用建議。autosuggest-toggle
:在啟用/停用建議之間切換。例如,這將綁定ctrl + space來接受目前建議。
bindkey ' ^ ' autosuggest-accept
如果您遇到問題,請搜尋 GitHub 上的問題列表,看看是否有其他人已經報告過該問題。
在報告問題之前,請嘗試暫時停用可能與此插件衝突的配置部分和其他插件,以隔離問題。
報告問題時,請包括:
.zshrc
配置。請參閱此評論,了解這意味著什麼的一個很好的例子。zsh --version
)從~/.zshrc
中刪除引用此外掛程式的程式碼。
從硬碟中刪除 git 儲存庫
rm -rf ~ /.zsh/zsh-autosuggestions # Or wherever you installed
編輯src/
中的來源檔。運行make
從這些來源檔案建立zsh-autosuggestions.zsh
。
歡迎拉取請求!如果您發送拉取請求,請:
develop
分支(不是master
)測試是使用rspec
框架用 ruby 編寫的。他們使用tmux
驅動偽終端,發送模擬擊鍵並對終端內容進行斷言。
測試文件位於spec/
中。若要執行測試,請執行make test
。若要執行特定測試,請執行TESTS=spec/some_spec.rb make test
。您也可以透過設定TEST_ZSH_BIN
環境變數來指定要使用的zsh
進位(例如: TEST_ZSH_BIN=/bin/zsh make test
)。
透過從提供的 Dockerfile 建置映像,可以在 Docker 映像中執行任何受支援的 zsh 版本的測試。若要為特定版本的 zsh 建置 docker 映像(其中下面的<version>
替換為ZSH_VERSIONS
檔案中一行的內容),請執行:
docker build --build-arg TEST_ZSH_VERSION= < version > -t zsh-autosuggestions-test .
建置映像後,透過以下方式執行測試:
docker run -it -v $PWD :/zsh-autosuggestions zsh-autosuggestions-test make test
該計畫已獲得麻省理工學院許可。有關許可證的全文,請參閱 LICENSE 文件。