tmux
が報告する理由
$TERM=screen-256color
通常kitty
レポート
$TERM=xterm-kitty
tmux
内でkitty
を実行する場合、どちらを使用すればよいですか?明らかにkitty
は高度な機能を提供し、xterm-kitty
を報告することは理にかなっています。 screenがscreen-256
であると報告するのはなぜですか?screenで実行されていることを認識する必要があるプログラムはありますか?キティxterm-kitty
で実行されている画面を呼び出すことは問題がありますか?
kitty内でtmuxを実行する場合、どちらを使用すればよいですか?
tmux
を実行するときは、must _TERM=screen
_、_TERM=tmux
_、またはその派生物の1つを使用する必要があります。 _TERM=screen-256color
_または_TERM=tmux-256color
_。
man tmux(1)
状態...
TERM環境変数は、tmux内で実行されるすべてのプログラムに対して「screen」に設定する必要があります。新しいウィンドウには自動的に「TERM = screen」が環境に追加されますが、シェルの起動ファイルでこれをリセットしないように注意する必要があります。
..さらに明確にすると...
このセッションで作成された新しいウィンドウのデフォルトのターミナル-TERM環境変数のデフォルト値を設定します。 tmuxが正しく機能するには、これを「screen」またはその派生物に設定する必要があります。
...彼らはmustも強調しています。
tmux wiki は、追加の説明と回答を続けています...
Tmuxの内部TERMは「screen」、「tmux」、または同様のもの(「tmux-256color」など)でなければなりません。それ以外の場所で問題を報告する気にしないでください!
画面で実行されていることを認識する必要のあるプログラムはありますか?
はい。 tput
などの多くのプログラムは、正しいscreen
を使用していない限り、tmux
(またはTERM
)で実行すると正しく表示されません。値。
TERMとは何ですか?それは何をしますか?
環境変数TERMは、terminfo(5)データベースから読み取る端末記述の名前をアプリケーションに通知します。各記述は、端末を制御するために何を送信するかをアプリケーションに伝えるいくつかの名前付き機能で構成されています。たとえば、「cup」機能には、カーソルを上に移動するために使用されるエスケープシーケンスが含まれています。
TERMがアプリケーションが実行されている端末の正しい説明を指すことが重要です-そうでない場合、アプリケーションが誤動作する可能性があります。
Infocmp(1)コマンドは端末の説明の内容を表示し、tic(1)コマンドはファイルから説明を作成してインストールします(通常、両方で-xフラグが必要です)。
キティxterm-kittyで実行中の画面を呼び出すのは問題でしょうか?
必ずしもそうではありませんが、実行中の画面の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
キティの高度な機能は、tmux
などと互換性がありません。たとえば、tmux
を実行してから、
$ kitty icat ~/Pictures/fc.jpg
Terminal does not support reporting screen sizes via the TIOCGWINSZ ioctl
$ TERM=xterm-kitty kitty icat ~/Pictures/fc.jpg
Terminal does not support reporting screen sizes via the TIOCGWINSZ ioctl
したがって、tmuxの下でTERM
をいじってキティのレポートと一致させても、せいぜい行き止まりになっていることがわかります。レンジャーでは、プレビューをレンダリングしようとすると、範囲がクラッシュします。
それはいくつかの質問です。より興味深いものに対する答えは次のとおりです。
Tmuxが報告する理由
$TERM=screen-256color
Tmuxの古いリリースでは、「そこにあるため」TERM = screenまたはTERM = screen-256colorを使用します。最終的には、(a)tmuxの開発者が機能を追加したかったため、および(b)画面がイタリック体の使用を妨げたために、状況が変わりました。
通常キティレポート
$TERM=xterm-kitty
Kitty内でtmuxを実行する場合、どちらを使用すればよいですか?
Tmuxに選択させる必要があります(カラーとファンクションキーの処理方法を確認するには、外部ターミナルの説明を参照してください)。
- Screenがscreen-256であると報告する理由
おそらく「screen-256color」を意味するはずです。 GNU screenは外側の$ TERM値を調べ、内側の値を選択します。ただし、この特定の値はユーザーの.screenrcファイルから取得されます(通常-パッケージャーが関与する場合があります)。
- 画面で実行されていることを認識する必要があるプログラムはありますか?
あんまり...
- キティxterm-kittyで実行されている画面を呼び出すことは問題がありますか?
一部のscreen
構成では、デフォルトでbce(バックカラー消去)が使用されます。 kittyはこの機能(ymmv)をサポートしていません。