TERM = tmux-256colorが原因で「ターミナルオープンエラー」が発生する

TERM = tmux-256colorが原因で「ターミナルオープンエラー」が発生する

活性化したいイタリック体tmux(macOS Big Sur 11.3のiTerm2内)。私はこれを次のように設定して達成しました。.tmux.conf

set -g default-terminal "tmux-256color"

homebrewを使用してncurses 6.2をインストールし、パスの最初の場所に設定しました。.zshrc:

  export PATH="$HOMEBREW_PREFIX/opt/ncurses/bin:$PATH"

このように変更した後、イタリック体を使用できます。

ただし、ncursesに依存する複数のプログラムを起動できませんでした:ncdu(1.15.1)とnano(2.0.6)の両方にエラーがあります。

Error opening terminal: tmux-256color.

私の考えでは、この設定をサポートしていないようですTERM。奇妙なことに、ncdu私のRaspbianシステムでは1.12が動作します。tmux-256color

何が問題なの?ncduプログラムは互換性があり、互換性があるべきではnanoありませんかtmux-256color

ハッキングされた回避策が見つかりました(macOSではRaspbianでは必要ありません)。で変数を明示的TERMに戻って.zshrcすべてのもの(イタリック体と手順)が動作します。

if [[ "$TERM" == "tmux-256color" ]]; then
  export TERM=screen-256color
fi

しかし、私が理解したところによると、TERM自己設定は絶対禁物です。環境を正しく設定する必要があります。実際に動作するというtmux-256color事実に驚きました。screen-256color?このハッキングは最終的に私の前で爆発するでしょうか?

ベストアンサー1

tmuxの端末記述は、infocmpの出力を見ると推測できるように、画面の端末記述から派生します。ただし、画面端末の説明を使用すると、変更されたファンクションキーとカーソルの外観を変更する機能が失われます。行が付いた文字も機能しません。実際、イタリック体は機能しません。なぜなら、画面端末の説明がイタリック体をリストしていないからです(おそらくtmuxには組み込みの解決策があるかもしれません。答えがファイルにある可能性が高くなります.tmuxrc)。

ncduとnanoがtmux-256color端末を拒否する問題は、MacOSが非常に古いバージョンのncurses(5.7、2008年から)、特定のプログラムを接続するために使用されます。ナノインカタリナ(ncduは将来のバージョンでリリースされる可能性がありますが、「複数」は問題になります。基本的なMacOSシステムの6つのプログラムのみが実際にCursesを使用しているため)。

MacPortsとhomebrewはncursesの最新バージョンを提供しています(6.2、2020年から)。そして6.1(2018)、数値が大きすぎて符号付き16ビット形式に収まらない端末記述のための新しいバイナリ形式です。以前のバージョンでは、このバイナリ形式は無視されません。tmux-256color(に追加2015年5月)。

アップグレードは正しいことです(ncursesは12年以上遅れており、Appleはやや遅くて信じられません)。 MacPortsとhomebrewはどちらも最新バージョンのnanoと同じバージョンのncduを提供しています。

おすすめ記事