tmuxについて

tmuxはターミナルマルチプレクサです。 複数の仮想端末を使用してtmux端末にアクセスできます。

tmuxのインストールと基本的な使用法は、関連記事で説明されています。

この記事は、クラウドサーバーでのtmuxの構成に焦点を当てています(画面で悪名高いことです)。 tmuxの構成可能性は、私たちが利用できるもう1つの強力なツールです。

構成ファイル

tmuxが起動すると、ホームディレクトリで.tmux.confというファイルが検索されます。 存在する場合、tmuxはそのファイルで設定された構成を使用します。

お気に入りのテキストエディタを使用して、.tmux.confという名前の新しいファイルをホームディレクトリで開きます。

tmuxの場合、「#」で始まる行はコメントです。

プレフィックスキー

プレフィックスキーは、tmuxのすべてのコマンドの前にあるキーの組み合わせです。 デフォルトでは、プレフィックスキーはCtrl-bです。 このキーの組み合わせは、ほとんどのキーボードで押すのが不快なだけでなく、他のいくつかのバインディング(vimなど)と競合することもあります。

一般的な代替品はCtrl-aです。 このはるかに快適な組み合わせは、tmuxが生まれる前にこのプレフィックスを使用していたscreenからのものです。

tmux.confに1行を含めることで、tmuxのすべてのセッションでこれを有効にできます。

set-option -g prefix C-a

プレフィックスにCtrl-bを使用しなくなるため、無効にする必要があります。

unbind-key C-b

Ctrl-aはEmacsテキストエディタと競合することに注意してください。

ネストされたtmuxセッションへのプレフィックスの送信

しばらくの間tmuxを使用した後、tmuxを使用してリモートクラウドサーバーに接続し始めることができます。このサーバーでもtmuxを使用しています。

プレフィックスがローカルのtmuxセッションによってインターセプトされて処理されるため、リモートセッションでコマンドを実行しようとすることは不可能になります。

幸い、tmuxにはsend-prefixと呼ばれるソリューションが組み込まれています。 通常、send-prefixは、プレフィックスキーと同じキーの組み合わせであるCtrl-bにバインドされます。 これは、プレフィックスの送信がCtrl-b Ctrl-bで行われた可能性があることを意味します。

ただし、他のアプリケーションと競合する可能性があるため、Ctrl-bのバインドを解除します。 Ctrl-aをsend-prefixにバインドすることで、コマンドの精神を維持できます(プレフィックスを繰り返します)。

bind-key C-a send-prefix

現在、プレフィックスをリモートセッションに送信するのは、Ctrl-a Ctrl-aと同じくらい簡単です。

Windowsの番号付け

ペインとは異なり、ウィンドウはゼロベースのインデックスを使用します。 0キーは1から遠く離れており、ほとんどのキーボードで押すのは扱いにくいです。

tmuxに、ペインのようなウィンドウに0ではなく1から番号を付けるように強制できます。

set -g base-index 1

エスケープシーケンス遅延の無効化

tmuxにはエスケープシーケンスのサポートが付属しています。 これは便利な場合もありますが、vimやシェルを使用する場合など、邪魔になることがよくあります。 特に、tmuxは、次のキーが関数またはシーケンスの一部である可能性があるかどうかを判断するために、エスケープ後0.5秒待機します。

これは通常、tmuxにとって望ましくない動作であるため、無効にすることができます。

set-option -sg escape-time 0

全体的なセットアップ

この記事のすべての手順に従うと、優れたスターター.tmux.confは次のようになります。

# Ctrl-b is a bad prefix key, use Ctrl-a instead
set-option -g prefix C-a
unbind-key C-b

# Also assign Ctrl-a to send the prefix to a remote session
bind-key C-a send-prefix

# Windows should be numbered from 1 like panes
set -g base-index 1

# Disable tmux waiting for an escape sequence
set-option -sg escape-time 0