使用手冊

指令建議

在一般終端機會話中輸入時,指令建議會列出取自 shell 本身補全定義的候選項目。指令仍在終端機原本的輸入列中編輯,選擇建議只會插入文字,不會執行指令。此功能不使用 AI 模型。

指令建議適用於 macOS 與 Linux。在 Windows 上,此功能目前處於關閉狀態(請參閱下方的 Windows 平台一節)。

設定與操作方式

設定 ▸ 終端機 ▸「命令補全提示」提供三種模式:

  • 自動提示(預設):VelaTerm 會先收集您約 25 毫秒內的輸入,再向 shell 要求建議;繼續輸入不會重新計算這段等待時間。如果您在要求處理期間繼續輸入,下一次要求只會使用您最新的輸入,過時的結果則會捨棄。與輸入完全相符的候選項目仍會保留在清單中。
  • 按 Tab 提示:只有在按下 Tab 時才會顯示建議。
  • 完全關閉:不顯示建議清單,Tab 維持 shell 原生的行為。

變更會立即套用到已開啟的終端機,且連線到同一個 VelaTerm 後端的所有用戶端都會共用這項設定。

按鍵與滑鼠操作:

  • 上下方向鍵可選擇候選項目;Page Up 與 Page Down 可在較長的清單中翻頁。
  • 按 Tab 或以滑鼠點選,即可插入選取的候選項目。
  • Enter 一律交給 shell,依您輸入的內容執行目前的指令,不會套用建議。
  • Escape 會關閉清單。
  • Ctrl+Space 可手動要求建議。
  • 選取項目無法再移動時,上下方向鍵會交還給 shell 處理。因此,在第一個候選項目上按上方向鍵,會叫出歷史記錄中的上一個指令。

候選項目依序排列為完全相符、前綴相符、子字串相符,以及 shell 提供的其他符合項目。在完全相符與前綴相符的項目中,大小寫相符者優先;在每一組中,較短的候選項目排在前面,長度相同時依字母順序排列。

清單會醒目標示每個候選項目中與您輸入相符的部分,並在 shell 提供描述時一併顯示;將滑鼠游標停在候選項目上即可閱讀較長的描述。結果重新整理時,清單會維持原本的位置與選取狀態。接受建議後清單會關閉,候選項目為以 / 結尾的目錄時也是如此。再按一次 Tab 即可查看下一層目錄。在「自動提示」模式下,繼續輸入會再次開啟清單。

如果您在插入尚未完成時變更了輸入,VelaTerm 會等待 shell 傳回新的結果,並只在該候選項目仍然出現時才插入。

Shell 支援情況

Shell建議來源
Zsh原生補全 widget 與 compadd;會使用您現有的補全定義。
Bash 4 或更新版本已註冊的補全函式與補全規格;未註冊任何補全時,提供指令名稱與檔案名稱。
Fish原生 complete -C 的候選項目與描述。
搭配 PSReadLine 的 PowerShell(pwsh)原生 CommandCompletion.CompleteInput。
Bash 3.2 與其他 shell僅提供原生 Tab 行為,不顯示建議清單。

macOS 隨附的 Bash 為 3.2 版。如要在 macOS 上搭配 Bash 使用指令建議,請將較新版本的 Bash(例如透過 Homebrew 安裝的版本)設為登入 shell。

指令建議僅適用於一般終端機會話,智慧體會話不受影響。

整合的載入方式

VelaTerm 會在終端機啟動時載入其 shell 整合。您的 shell 啟動檔案一律不會被修改,自訂的啟動指令也仍會在整合載入後執行。在您安裝具備此功能的版本之前就已在執行的終端機,需要重新啟動。

  • Zsh 會在讀取您自己的登入檔案之後,透過暫存的啟動檔案載入整合,之後再還原 ZDOTDIR。終端機中不會輸入任何內容。
  • Bash 會以暫存的 --rcfile 啟動,先依 Bash 的一般順序讀取您的登入檔案(/etc/profile,接著是 ~/.bash_profile、~/.bash_login 與 ~/.profile 中第一個存在的檔案),再載入整合。終端機中不會輸入任何內容。與一般登入 shell 相比仍有兩項差異:shopt -q login_shell 會回報 false,且 shell 結束時不會執行 ~/.bash_logout。
  • Fish 與 PowerShell 沒有類似的啟動掛鉤,因此 VelaTerm 會在 shell 啟動時傳送一行載入整合的指令;該行會出現在新終端機的頂端。

PowerShell 的執行原則同樣適用於整合指令碼;VelaTerm 不會略過執行原則。

在指令執行期間、全螢幕程式開啟時、輸入法(IME)組字期間,以及瀏覽歷史記錄時(Ctrl+R、Ctrl+S 與方向鍵),指令建議會暫停。方向鍵一律不會觸發自動要求,因此連續按上方向鍵會持續往前瀏覽先前的指令。整合未啟用或找不到候選項目時,Tab 維持原生行為。

在終端機中啟動 SSH 或其他巢狀 shell 時,不會在該環境中安裝整合。

Windows 平台

在 Windows 上,無論設定為何都不會載入整合,「命令補全提示」設定也會隱藏。cmd、Windows PowerShell、pwsh、Git Bash 與 WSL 終端機維持原生的 Tab 行為。此功能之所以維持關閉,是因為在 Windows 上載入它需要在每個新終端機中輸入一行指令,而且每次要求都會啟動輔助處理程序,導致輸入變慢。

限制

  • 候選項目取決於您的 shell 所安裝的補全定義。VelaTerm 不提供自己的指令目錄,也不提供以歷史記錄為基礎的預測。
  • 部分複雜的 Bash 補全指令碼依賴 Readline 的內部機制,整合無法完全重現。
  • 補全函式可能會執行外部程式,速度可能較慢。清單在兩秒後就不再等待,但仍在執行的 shell 函式不會被終止;請照常按 Ctrl+C 中斷。
  • 整合會保留 Ctrl+F12 用於收集候選項目、Ctrl+F11 用於插入選取項目。如果 shell 設定在終端機啟動後重新繫結這些按鍵,指令建議可能會因此失效。在 Bash 4.0 至 4.3 中,整合還會包裝 Enter 與 Ctrl+J。
  • 描述來自 shell。許多 Bash 補全定義並未提供描述,因此其候選項目不會顯示描述。

測試情況

此功能已在 macOS 上以 Zsh 與 Bash 5.2 測試,並在 Linux 上以 Bash、Zsh、Fish 與 PowerShell 7.4 測試。