螢幕和小貓 $TERM 應該是什麼?
為什麼要
tmux
舉報$TERM=screen-256color
通常會
kitty
報告$TERM=xterm-kitty
如果我在
tmux
裡面跑,我應該使用哪個kitty
?顯然kitty
提供了高級功能,並且它報告是有道理的xterm-kitty
。為什麼螢幕報告說screen-256
有程序需要注意它們正在螢幕中執行?在 kitty 中呼叫 screen running 會不會有問題xterm-kitty
?
如果我在 kitty 中執行 tmux,我應該使用哪個?
執行時
tmux
,您必須使用TERM=screen
,TERM=tmux
或其中一種派生詞,例如TERM=screen-256color
或TERM=tmux-256color
。男人
tmux(1)
說…對於在 tmux 中執行的所有程序,TERM 環境變數必須設置為“screen”。新視窗將自動將“TERM=screen”添加到它們的環境中,但必須注意不要在 shell 啟動文件中重置它。
..並進一步澄清…
為在此會話中創建的新視窗設置預設終端 - TERM 環境變數的預設值。要使 tmux 正常工作,必須將其設置為 ‘screen’ 或其派生詞。
…他們還強調必須。
tmux wiki繼續提供額外的說明和答案……
tmux 裡面的 TERM 必須是“screen”、“tmux”或類似的(例如“tmux-256color”)。不要費心報告不存在的問題!
是否有需要注意它們正在螢幕中執行的程序?
是的。許多程序,例如,在執行時(或)
tput
將無法正確顯示,除非它們使用正確的值。screen``tmux``TERM
什麼是 TERM,它有什麼作用?
環境變數 TERM 告訴應用程序從 terminfo(5) 數據庫中讀取的終端描述名稱。每個描述都由許多命名的能力組成,這些能力告訴應用程序發送什麼來控制終端。例如,“cup”功能包含用於向上移動游標的轉義序列。
重要的是 TERM 指向應用程序正在執行的終端的正確描述 - 如果沒有,應用程序可能會出現異常。
infocmp(1) 命令顯示終端描述的內容,tic(1) 命令從文件建構和安裝描述(通常兩者都需要 -x 標誌)。
在kitty xterm-kitty中呼叫screen執行會不會有問題?
不一定,只要
TERM
執行螢幕中的值設置正確(即TERM=screen-256color
)並且有有效的 terminfo 字元串用於它screen
或tmux
知道如何處理。其他衍生產品(在我的機器上)是:
/usr/share/terminfo/s/screen /usr/share/terminfo/s/screen-16color /usr/share/terminfo/s/screen-256color /usr/share/terminfo/s/screen.Eterm /usr/share/terminfo/s/screen.gnome /usr/share/terminfo/s/screen.konsole /usr/share/terminfo/s/screen.linux /usr/share/terminfo/s/screen.mlterm /usr/share/terminfo/s/screen.mrxvt /usr/share/terminfo/s/screen.rxvt /usr/share/terminfo/s/screen.teraterm /usr/share/terminfo/s/screen.vte /usr/share/terminfo/s/screen.xterm-r6 /usr/share/terminfo/s/screen.xterm-new /usr/share/terminfo/s/screen.xterm-xfree86
一旦
TERM
設置,您可以執行infocmp
. 這將報告該值是否存在有效的 terminfo。其他測試可以驗證基本的 terminfo 功能,例如:
for terminfos in $(find /usr/share/terminfo/s -type f -name 'screen*' -printf '%f\n' -o -name 'tmux*' -printf '%f\n'); do export TERM=$terminfos; printf "%s: %sthis is foreground color 10 %sitalics%s and now all attributes are turned off\n" "$terminfos" "$(tput setaf 10)" "$(tput sitm)" "$(tput sgr0)"; done