Terminfo
Terminfo 用於向軟體告知終端機的能力。 Ghostty 自帶自己的 terminfo 條目來宣傳其功能。
Terminfo 是一種古老的資料格式,很多終端機 應用程式仍在用它來判定終端機 的能力。Ghostty 自帶自己的 terminfo 條目來對外宣傳 其功能。
Ghostty 使用 TERM 值 xterm-ghostty。
Note
為什麼要帶
xterm前綴? 不幸的是,許多終端機應用程式會 在TERM值中搜索字串 "xterm" 來推斷功能。在私有測試期間,我們 試過純ghostty值,但發現太多應用程式掛掉,修復整個生態也不現實。 我們最終選擇xterm-ghostty以維持相容性。
Ghostty 的套件內建了 terminfo 條目,並會設定相應的檔案系統
佈局或環境變數,使其可供系統使用。當你在執行
Ghostty 時,只要偵測到 terminfo 條目
可用,它就會自動把 TERM 環境變數設為
xterm-ghostty。
Important
Ghostty 的 terminfo 條目已包含在 ncurses 6.5-20241228 及更高版本中。 隨著發行版更新其 ncurses 套件,Ghostty 的 terminfo 條目將預設在系統範圍內 可用。這一點還需要時間傳播。
如果你使用 sudo,sudo 可能會重置你的環境變數,導致
某些程式執行時看到 missing or unsuitable terminal: xterm-ghostty 或 'xterm-ghostty': unknown terminal type. 的錯誤。
要解決此問題,你必須設定 sudo 保留
TERMINFO 環境變數,或者你可以使用 shell-integration 並指定
sudo 功能,Ghostty 會把 sudo 別名化,自動為你處理。要啟用 shell-integration 特定功能,你得在設定中指定
shell-integration-features = sudo。
更多資訊請看
shell-integration-features
關於此配置選項的說明。
如果你透過 SSH 連線到沒有 Ghostty terminfo 條目
的機器,你將看到諸如 missing or unsuitable terminal: xterm-ghostty, Error opening terminal: xterm-ghostty. 或
WARNING: terminal is not fully functional 的錯誤訊息。
希望未來某天 Ghostty 的 terminfo 條目會被各處預先發布,但在那之前, 有兩種方法可以使情況得到解決:
- 在本機上,執行以下單行命令:
infocmp -x xterm-ghostty | ssh YOUR-SERVER -- tic -x - - 在伺服器上,確認設定已保存到
/usr/share/terminfo/...。 如果沒有,檢查$HOME/.terminfo/...並把它搬過去。
伺服器上的 tic 命令可能會給出 “<stdin>”,第 2 行、第 31 欄,終端機 'xterm-ghostty':較舊的 tic 版本可能把描述 欄位當成別名 的警告,可以安全忽略。
tic 通常會把結果放到系統資料庫 /usr/share/terminfo 中。
該位置可透過 TERMINFO 環境變數覆寫。
如果 TERMINFO 未設定,且 tic 無法寫入系統位置,則
若 $HOME/.terminfo 存在,它會把結果放到那裡。
若發生這種情況,請參閱 man tic 了解詳情。
Note
macOS Sonoma 之前的版本無法使用系統自帶的
infocmp。 內建的ncurses版本過舊,無法產生能被更新版本的tic讀取的 terminfo 條目,命令會因一堆Illegal character訊息而失敗。你可以用 Homebrew 以brew install ncurses安裝新版的ncurses,並把上面的infocmp替換為完整路徑/opt/homebrew/opt/ncurses/bin/infocmp或/usr/local/opt/ncurses/bin/infocmp來解決。
- 在本機上,新增下列 SSH 設定
(需要 OpenSSH 8.7 或
更新版本):
# .ssh/config Host example.com SetEnv TERM=xterm-256color
Ghostty 可以把這兩種方式都自動化。請見 SSH
了解 ghostty +ssh CLI 動作以及 ssh-env /
ssh-terminfo shell integration 功能的詳情,包括這些自動化在何時生效的幾個
重要限制。
Warning
回退不支援進階終端機功能。 由於
xterm-256color並不包含 Ghostty 的所有能力, 超出 xterm 的終端機功能(例如帶顏色和樣式的底線)將無法運作。