我已經設定了我的 tmux 來使用screen-256colors
,它與 vim 配合得很好。
但是,當我從 tmux 內 ssh 到遠端主機時,screen-256colors
無法識別,因此我收到以下錯誤:
E558: Terminal entry not found in terminfo 'screen-256color' not known. Available builtin terminals are:
builtin_ansi
builtin_xterm
builtin_iris-ansi
builtin_dumb defaulting to 'ansi'
除了編輯每個遙控器.bashrc
(類似於這個建議),有什麼方法可以TERM
在遠端主機上正確且自動地設定?
答案1
大多數情況下您需要安裝必要的術語訊息遠端主機上的描述。 Linux 程式使用 Terminfo 來決定如何處理特定終端(發送哪些控製程式碼)。
例如,在 Debian 或 Ubuntu 上,您通常需要該ncurses-base
軟體包(它收集所有「已建立」終端模擬器的 terminfo 資料)。
如果失敗,您可以手動複製特定終端的 terminfo 資料:
在本機系統上,將描述轉儲為文字格式:
infocmp xterm-256color > xterm-256color.ti infocmp screen-256color > screen-256color.ti
將檔案複製到遠端主機並再次編譯:
tic xterm-256color.ti tic screen-256color.ti
在 Linux 上,描述將儲存在~/.terminfo
. (請注意,截至 2023 年最近的更新,此位置將不是不再被“setuid”程式讀取,儘管這些通常很少見。
infocmp
並且tic
是其中的一部分恩詛咒或者ncurses-bin大多數 Linux 發行版以及大多數使用的 BSD 中的軟體包恩詛咒(儘管在 BSD 上可能沒有每個使用者資料庫)。
答案2
我的 .bashrc 中有這個:
alias ssh='TERM=screen ssh'