tmux
tmux (terminal multiplexer) はそれぞれ別のプログラムが動作する多くの端末(もしくはウィンドウ)を、一つの画面もしくは端末のウィンドウから作成し、アクセス、管理することを可能にするプログラムです。tmux は画面から分離しバックグラウンドで動き続け、後々画面に合流することもできます。[1]
GNU Screen に慣れ親しんだユーザーにとって、tmux は適切な代替ソフトになるでしょう。
インストール
USE フラグ
USE flags for app-misc/tmux Terminal multiplexer
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
jemalloc
|
Use dev-libs/jemalloc for memory management |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
systemd
|
Enable use of systemd-specific libraries and features like socket activation or session tracking |
utempter
|
Include libutempter support |
vim-syntax
|
Pulls in related vim syntax scripts |
Emerge
app-misc/tmux をインストール:
root #
emerge --ask app-misc/tmux
設定
tmuxの基本的なインストールでは、グローバル(/etc/tmux.conf) もしくはパーソナル(~/.tmux.conf)な設定ファイルを用意しません。設定例は /usr/share/doc/tmux-VERSION/example_tmux.conf に存在するので、パーソナルおよびグローバルな場所にコピーして使うこともできます。
設定ファイル
- /etc/tmux.conf — システム全体の設定ファイル。
- $XDG_CONFIG_HOME/tmux/tmux.conf — ユーザ固有の tmux 設定ファイル。
- ~/.tmux.conf — ユーザ固有の tmux 設定ファイルのレガシーな場所。
設定例
# Run users default shell, which for example could expand to '/bin/bash', often used to prevent tmux starting login shells.
#set -g default-command "${SHELL}"
# The opposite can be useful to launch other shells with appropriate options
#set -g default-command "fish -l"
# Match session numbers to number row
set -g base-index 1
# Set TERM, the default is "screen", "screen-256color" can be tried if "tmux-256color" doesn't work.
set -g default-terminal "tmux-256color"
# Set prefix to 'a' with ctl-a > a to send ctrl-a to the terminal
#set -g prefix C-a
#bind-key a send-prefix
# Set prefix2 to the default 'b'
#set -g prefix2 C-b
# Enable mouse
set -g mouse on
# Disable drag action in normal mode if your pointer causes problems with
unbind -n MouseDrag1Pane
# Also disable in copy mode
#unbind -Tcopy-mode MouseDrag1Pane
# Set the bar and inactive borders to blue, highlighting current in green.
#set-option -g status-style fg=black,bg=blue
#set-window-option -g window-status-current-style bg=green
#set-option -g pane-border-style fg=blue
#set-option -g pane-active-border-style fg=green
設定ファイルを再読み込みするには、ターミナルから次を実行してください:
user $
tmux source-file ~/.tmux.conf
代わりに、ファイルへの変更は tmux の中から以下によって読み込むこともできます:
:
source-file ~/.tmux.conf
自動接続
exec と -ADX
オプションを付けて tmux を実行すると、tmux は現在のシェルを置き換えて新しいセッションを作成するか、すでにセッションが存在する場合はそれに接続して他のクライアントをデタッチして終了させます。これはリモートセッションで作業するために非常に一貫した方法で、自動で実行させることができます:
Bash
user $
test -n "$PS1" && test -z "$TMUX" -a -n "$SSH_TTY" && exec tmux new -ADX
Fish
user $
status is-interactive ; and test -z "$TMUX" -a -n "$SSH_TTY" ; and exec tmux new -ADX
プラグイン
僅かながら plugins が tmux で利用可能です。以下の章で利用可能なオプションを確認してください。
tpm
tpm は tmux プラグインマネージャ (plugin manager) です。インストールプロセスについてのさらなる情報のためには、tpm サブ記事を確認してください。
tmux-mem-cpu-load
tmux-mem-cpu-load は tmux のステータスを示す行でシステムをモニターするように設計された小さなプログラムです。インストールに関する詳細は別の記事 (tmux-mem-cpu-load) を確認してください。
Tmux Resurrect
tmux-resurrect はシステム再起動を跨いで tmux 環境を維持します。インストール手順のさらなる詳細については resurrect サブ記事をお読みください。
使い方
キー・バインディング
tmux は、アタッチされたクライアントから、プリフィックスキーストローク (デフォルトでは Ctrl+b) とコマンドキーの順のキーコンビネーションを使用して、制御することができます。
Ctrl+b を押した後、次のキーコンビネーションを使用できます:
一般操作
- ? = すべてのキーバインディングを一覧表示する。
- d = 現在のクライアントをデタッチする。
- : = tmux コマンドプロンプトに入る。
ウィンドウの作成や管理
- c = 新しいウィンドウを作成する
- n = 次のウィンドウへ変更する。
- p = 前のウィンドウへ変更する。
- l = 直前に選択していたウィンドウへ移動する。
- 0-9 = 0 から 9 のウィンドウを選択する。
- ' = 選択するウィンドウインデックスの入力を促す。その後、番号またはタイトルを入力してそのウィンドウに切り換える。
- , = 現在のウィンドウの名前を変更する。
- w = 現在のウィンドウを対話的に選択する。
- :、そして list-windows と入力して enter = ウィンドウの一覧を表示する。
ペインの作成や管理
- " = 現在のペインを上下に分割する。
- % = 現在のペインを左右に分割する。
- o = 現在のウィンドウの次のペインを選択する。
- ; = 直前にアクティブだったペインへ移動する。
- { = 現在のペインと前のペインを入れ替える。
- } = 現在のペインと次のペインを入れ替える。
- Ctrl+o = 現在のウィンドウ内のすべてのペインを順方向にローテーションする。
- Alt+1 から Alt+5 = 5 種類のプリセットレイアウトのうちのひとつでペインを並べる: even-horizontal、even-vertical、main-horizontal、main-vertical、または tiled。
- x = 現在のペインを殺す。
- ! = 現在のペインをウィンドウから分離する。
コピーや貼り付け、スクロールの操作
利用できるキーは emacs モード (デフォルト) が選択されているか、vi モードが選択されているかによって異なります。.tmux.conf で mode-keys オプションを設定することで vi モードにすることができます。
- [ = テキストをコピーするためにコピーモードに入るか、スクロールバックバッファで出力履歴を表示する。コピーモード中は、j または k を押すことでカーソルを行単位でそれぞれ下または上に動かすことができ、{ と } では段落単位で下または上に動かすことができます。
- ] = 一番最近コピーされたテキストバッファを貼り付ける。
- # = すべてのペーストバッファを一覧表示する。
- - = 一番最近コピーされたテキストバッファを削除する。
セッション制御
セッションの開始
tmux が開始されると、セッションに対応するソケットが /tmp/S-<UID>/<セッション名> に作成されます
tmux は次のコマンドで開始することができます:
user $
tmux
あるいは、起動時にセッションに名前を付ける場合は、次を実行してください:
user $
tmux new-session -s portage
セッションのリスト表示
現在存在しているセッション情報を確認するには、tmux セッションを一覧表示してください:
user $
tmux ls
0: 1 windows (created Thu Apr 9 09:09:03 2015) [180x65] (attached)
セッションを一覧表示したときに、セッション名がセッション情報の行の最初の項目として現れているはずです。上の出力からは、名前を付けずにセッションが作成されたため、そのセッションが 0
として参照されていることが分かります。
セッションの一覧表示は、長い形式の引数 list-sessions
を入力ことでも行えます。
user $
tmux list-sessions
0: 1 windows (created Thu Apr 9 09:09:03 2015) [180x65] (attached)
前の一覧表示コマンドとまったく同じ出力が表示されます。
セッション名の変更
セッションを開始するために単に tmux コマンドを使用すると、人間にとって分かりやすい素敵な名前のついたセッションは提供されません。
デフォルトのセッション名が十分に説明的でなければ (0
は通常、内容を説明していないでしょう)、セッションの名前を変更することができます。例えば、牛の Larry くんが、起動時にセッション名を指定せずに tmux を開始したとしましょう。彼は Portage の新しいバージョンのコンパイルを開始し、セッション名を現在の作業を反映するように変更したくなりました。セッション名を変更するために、tmux の制御を得ます。魔法のキーストローク Ctrl+b、続けて : を押すことで、tmux コントロール行にフォーカスします。デフォルトでは行が黄色になるでしょう。そうして、彼は次を実行するでしょう:
:
rename-session -t 0 portage
ここで 0
は既存の (デフォルトの) セッション名で、portage
はセッションに与えたい新しい名前です。tmux セッションからデタッチされている状態で名前を変更するには、次を実行してください:
user $
tmux rename-session -t 0 portage
セッションを再開する
セッションをデタッチしても、アクティブな端末はアクティブであり続け、完了していないコマンドも同様に実行され続けます。セッションを再開するには、attach -t <セッション名>
を使用してください。
user $
tmux a -t portage
または、既存のセッションにアタッチするための長い形式を使用してください:
user $
tmux attach -t portage
デーモン風の操作
セッションにアタッチせずに tmux セッション内でコマンドを開始する (デーモンのように) には、実行したいコマンドをクォートして、new-session -d
に続けて使用してください:
user $
tmux new-session -d 'emerge -uDNvp @world'
関連項目
- Recommended_tools#Terminal_multiplexers — 他のターミナルマルチプレクサ。
- Screen — a program that enables the creation of multiple sessions and virtual terminals within a single terminal.
外部資料
- Making tmux Pretty and Usable — tmux.conf をカスタマイズするためのガイド。
- https://tmuxcheatsheet.com/.
- 素晴らしい tmux 入門。
- The Tao of tmux、libtmux および tmuxp の作者である Tony Narlock による eBook。
- gpakosz/.tmux いろいろと簡単にするために。