1と2のリビジョン間の差分
2016-12-04 00:21:01時点のリビジョン1
サイズ: 6864
コメント:
2016-12-04 02:37:31時点のリビジョン2
サイズ: 10195
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 25: 行 25:
「他爆装置」的な機能もありますが、どちらかというとトラブルシュート時に使うものになります。 「他爆装置」的な機能も用意されていますが、どちらかというとトラブルシュート時に使うものになります。
行 28: 行 28:
もちろんターミナルが突然切断されても tmux で保護された仮想端末はそのまま処理し続けます。

人為的に(意図的)に切断したい場合は「''PREFIX''」「d」と入力して切断します。
''PREFIX'' は tmux の場合 CTRL+b(コントロールキーを押しながら b を押す)となります(設定変更可)。
この場合「コントロールキーを押しながら b を押して、コントロールキーから手放して d を押す」操作となります。

なお GNU Screen の ''PREFIX'' は CTRL+a で、この手のツールの説明ではよく、「PREFIX+d」ないしは「CTRL+b d」ないしは、
ターミナルが突然切断されても tmux で保護された仮想端末はそのまま処理し続けます。

人為的に(意図的)に切断したい場合は「''PREFIX''」を入力して「d」を入力して、で切断します。
''PREFIX'' は tmux の場合 CTRL+b(コントロールキーを押しながら b を入力)となります(設定変更可)。
この場合「コントロールキーを押しながら b を入力、コントロールキーから手放して d を入力」操作となります。

なお GNU Screen の ''PREFIX'' は CTRL+a で、この手のツールの説明ではよく、
「PREFIX+d」ないしは「CTRL+b d」(CTRL+b が ''PREFIX'' として)ないしは、
行 38: 行 39:
コントロールキー押しっぱなしで操作したいよね。と。 使う人に優しいキーバインド。
行 63: 行 64:
 * 「直前のウィンドウ」に切り替えたいときは「''PREFIX''+l」です。
行 66: 行 68:
「''PREFIX''+[」でバックログ(過去の表示履歴)を見る状態に移行します。 「''PREFIX''+[」でバックログ(過去の表示履歴)を見る状態に移行します。
行 71: 行 73:
普段 vi キーバインドで使用している(設定変更により)のと、 自分は普段 vi キーバインドで使用している(設定変更により)のと、
行 74: 行 76:
このモードから脱出する場合は ESC キー(ないしは q」を押します。 このモードから脱出する場合は「q」を押します。

== ウィンドウの縦分割(ペイン) ==
「''PREFIX''+"」(ダブルクォート)でウィンドウを縦半分に分割します。

== ウィンドウの横分割(ペイン) ==
「''PREFIX''+%」(パーセント)でウィンドウを横半分に分割します。

== ペイン間の上下左右移動 ==
 * 「''PREFIX''+↑」で上にあるペインに移動します。
 * 「''PREFIX''+←」で←にあるペインに移動します。
 * 「''PREFIX''+→」で→にあるペインに移動します。
 * 「''PREFIX''+↓」で下にあるペインに移動します。

ウィンドウ間の移動と違って、戻るとか進むとか直前の…あるいは番号指定といった操作はありません。

== ペインのサイズ変更 ==
 * 「''PREFIX''+^↑」で上に1行、ペインを拡大または縮小します。
 * 「''PREFIX''+^←」で左に1桁、ペインを拡大または縮小します。
 * 「''PREFIX''+^→」で右に1桁、ペインを拡大または縮小します。
 * 「''PREFIX''+^↓」で下に1行、ペインを拡大または縮小します。

リサイズ=サイズ変更なので拡張か縮小しかないのですが、どういう理屈で拡大したり縮小するかはよくわかってないです:-)。

なお、CTRL の代わりに ALT(META)キーを押しながら…だと5行ないしは5桁単位でリサイズできます。
行 77: 行 103:
いかんせん、PREFIX のデフォルトが CTRL+b など、自分にとって使いづらいことこの上ないので、カスタムしました
カスタム内容は ~/.tmux.conf に記載することで対応します新しいセッションで反映
いかんせん、PREFIX のデフォルトが CTRL+b である。GNU Screen からの移行で降るまいが慣れてない。
など、自分にとって使いづらいことこの上ないので、カスタムしてい
カスタム内容は ~/.tmux.conf に記載することで対応します
tmux.conf の変更は
新しいセッションで反映されますが、セッションが生き残ってると反映されません
行 83: 行 111:
unbind ^b unbind-key ^b
行 89: 行 117:
また「''PREFIX''+''PREFIX''」の振る舞いが GNU Screen とは違います。
tmux の場合''PREFIX''を特別扱いしません。
''PREFIX''であるところの「CTRL+b」としてキー割り当てが行われています。
また「CTRL+b そのものを入力する」機能が割り当てられています。

いずれにせよ、そんなキーは無効にするに限る。と。

== 直前のウィンドウに戻る ==
{{{
bind-key C-t last-window
}}}
GNU Screen と同じく「''PREFIX''+''PREFIX''」の挙動を「直前にウィンドウに戻る」とします。
行 98: 行 139:
行 106: 行 146:
''PREFIX''+0 から ''PREFIX''+9 まで10個のウィンドウを指定することができます ''PREFIX''+0 から ''PREFIX''+9 まで10個のウィンドウを指定することができます

自分の場合
0は特別扱いして普段使いは1から使うようにしています。
そのため base-index には 0 を指定しています。
行 110: 行 154:
いずれにしてもウィンドウの開始位置と自分の感覚が合う(お気に入り)ように、何度も調整が必要です。 いずれにしてもウィンドウの開始位置と自分の感覚が合うよう(お気に入り)に、何度も調整が必要です。
行 121: 行 165:
||<#FF0000>書式 ||<#FF0000> 表示内容 || ||<#FFFF00>書式 ||<#FFFF00> 表示内容 ||
行 125: 行 169:
他にもたくさんあるけど、あまり使い出が無い…。 他にもたくさんあるけど、あまり使い出が…。
行 134: 行 178:
== 直前のウィンドウに戻る ==
{{{
bind-key C-t last-window
}}}

GNU Screen を知っている人なら、''PREFIX''+''PREFIX'' と ''PREFIX'' の二度押しで直前のウィンドウに戻れる機能があります。
これを tmux で再現したい場合に設定します。
行 146: 行 182:
= セッション・ウィンドウ・ペイン =
tmux は以下の包含関係があります。

{{{
+- セッション -----------+
| |
| +- ウィンドウ -----+ |
| | | |
| | +- ペイン ---+ | |
| | | | | |
| | | | | |
| | | | | |
| | +------------+ | |
| | | |
| +------------------+ |
| |
+------------------------+
}}}

 * 「セッション」は tmux new で作成されるある種のコンテナ(tmux サーバープロセス)です。
 * これに画面であるところの「ウィンドウ」が割り当てられます。
 * また画面内に複数(1~)の「ペイン」を割り当てられます。
 * 通常これは1:1:1で使用することになります。
 * tmux の場合「ペイン」の操作が難しく感じることがあるのは、作成(分割)だけでなく位置・サイズの指定といった部分にあります。
 * 少しずつ整理すれば使いこなしは簡単です。

tmux - Terminal multiplexer

サーバーでなんらかしら処理を実行させている時に、接続してたセッションが切れてしまい、 それまで実行していた処理が台無しになった悲劇について、枚挙にいとまがありません。 nohup ~ & によるバックグラウンド実行ネタは典型かもしれませんが、 tmux(screen でもいいけど)で端末を仮想化してしまうのも手です。 繊細なオペレーションが必要な場合は tmux を使うくせを付けておきたいところ。

基本機能

起動方法

tmux new [コマンド...]
  または
tmux new-session [コマンド...]

新しい「セッション」を立ち上げます。 指定した「コマンド」が終了すると、そのまま tmux も終了してしまうため、 「コマンド」は指定せずに、デフォルトシェル(環境変数 SHELL 参照してる)で立ち上げて、 「コマンド」を実行しましょう。

終了方法

もちろんコマンドを終了すればいいので、シェルなら exit(logout)で終了します。 「他爆装置」的な機能も用意されていますが、どちらかというとトラブルシュート時に使うものになります。

一時的な切断

ターミナルが突然切断されても tmux で保護された仮想端末はそのまま処理し続けます。

人為的に(意図的)に切断したい場合は「PREFIX」を入力して「d」を入力して、で切断します。 PREFIX は tmux の場合 CTRL+b(コントロールキーを押しながら b を入力)となります(設定変更可)。 この場合「コントロールキーを押しながら b を入力、コントロールキーから手放して d を入力」操作となります。

なお GNU Screen の PREFIX は CTRL+a で、この手のツールの説明ではよく、 「PREFIX+d」ないしは「CTRL+b d」(CTRL+b が PREFIX として)ないしは、 「^b d」という表現で表されています。

勘のいい人なら「PREFIX+^d」(つまり CTRL+b CTRL+d)でも一時切断できるのに気がつくと思います。 使う人に優しいキーバインド。

セッションの一覧

tmux ls
  または
tmux list-sessions

複数の tmux セッションを立ち上げたときに、どの tmux に接続できるのか一覧で確認できます。

一時切断したセッションに接続する

tmux attach [-t <セッション番号>]
  または
tmux attach-session [-t <セッション番号>]

PREFIX+d で抜けた、あるいは、強制切断してしまったセッションに再接続したい時に指定します。

新しいウィンドウを作成する

セッション上に複数のウィンドウを開くことができます。 PREFIX+c ないしは PREFIX+^c です。

ウィンドウを切り替える

  • 「次のウィンドウ」に切り替えたいときは「PREFIX+n」ないしは「PREFIX+^n」です。

  • 「前のウィンドウ」に切り替えたいときは「PREFIX+p」ないしは「PREFIX+^p」です。

  • 「直前のウィンドウ」に切り替えたいときは「PREFIX+l」です。

  • 「指定したウィンドウ番号」に切り替えたいときは「PREFIX+0」~「PREFIX+9」です。

バックログを見る

PREFIX+[」でバックログ(過去の表示履歴)を見る状態に移行します。 この状態を「コピーモード」と言います。

カーソルキーで上下に移動可能です。 デフォルトで emacs キーバインドでスクロールすることが可能なのですが、 自分は普段 vi キーバインドで使用している(設定変更により)のと、 emacs キーバインドを忘れてしまったので、詳細は省略します。

このモードから脱出する場合は「q」を押します。

ウィンドウの縦分割(ペイン)

PREFIX+"」(ダブルクォート)でウィンドウを縦半分に分割します。

ウィンドウの横分割(ペイン)

PREFIX+%」(パーセント)でウィンドウを横半分に分割します。

ペイン間の上下左右移動

  • PREFIX+↑」で上にあるペインに移動します。

  • PREFIX+←」で←にあるペインに移動します。

  • PREFIX+→」で→にあるペインに移動します。

  • PREFIX+↓」で下にあるペインに移動します。

ウィンドウ間の移動と違って、戻るとか進むとか直前の…あるいは番号指定といった操作はありません。

ペインのサイズ変更

  • PREFIX+^↑」で上に1行、ペインを拡大または縮小します。

  • PREFIX+^←」で左に1桁、ペインを拡大または縮小します。

  • PREFIX+^→」で右に1桁、ペインを拡大または縮小します。

  • PREFIX+^↓」で下に1行、ペインを拡大または縮小します。

リサイズ=サイズ変更なので拡張か縮小しかないのですが、どういう理屈で拡大したり縮小するかはよくわかってないです:-)。

なお、CTRL の代わりに ALT(META)キーを押しながら…だと5行ないしは5桁単位でリサイズできます。

独断と偏見の推奨設定

いかんせん、PREFIX のデフォルトが CTRL+b である。GNU Screen からの移行で降るまいが慣れてない。 など、自分にとって使いづらいことこの上ないので、カスタムしています。 カスタム内容は ~/.tmux.conf に記載することで対応します。 tmux.conf の変更は新しいセッションで反映されますが、セッションが生き残ってると反映されません。

''PREFIX'' の変更

set-option -g prefix ^t
unbind-key ^b

tmux にせよ GNU Screen にせよ、微妙なキーをデフォルトにしているので、普段使わなさそうなキーを PREFIX に指定します。 自分は CTRL+t に決めました。

また「PREFIX+PREFIX」の振る舞いが GNU Screen とは違います。 tmux の場合PREFIXを特別扱いしません。 PREFIXであるところの「CTRL+b」としてキー割り当てが行われています。 また「CTRL+b そのものを入力する」機能が割り当てられています。

いずれにせよ、そんなキーは無効にするに限る。と。

直前のウィンドウに戻る

bind-key C-t last-window

GNU Screen と同じく「PREFIX+PREFIX」の挙動を「直前にウィンドウに戻る」とします。

バックログの保持行数の変更

set-option -g history-limit 10000

ステータス行の表示可否

set-option -g status off

画面下の行にステータスを表示したくない時に off に指定します。表示したい時(デフォルト)は on です。

ウィンドウの開始番号を指定する

set-option -g base-index 0

PREFIX+0 から PREFIX+9 まで10個のウィンドウを指定することができます。

自分の場合、0は特別扱いして普段使いは1から使うようにしています。 そのため base-index には 0 を指定しています。

キーボードを見ると、1~9、0という並びなので、1から始めると使いやすいかもしれません。 その場合は base-index に 1 を指定します。

いずれにしてもウィンドウの開始位置と自分の感覚が合うよう(お気に入り)に、何度も調整が必要です。

ウィンドウタイトルの表示変更可否・書式指定

set-option -g set-titles on
set-option -g set-titles-string "#T #S:#I"

tmux は XTerm 由来のウィンドウタイトルバーの変更機能(エスケープシーケンス)に対応しています。 この機能のオンオフ(set-titiles)や表示フォーマットの指定(set-titles-string)が可能です。

書式

表示内容

#T

ユーザー指定タイトル

#S

セッション番号

#I

ウィンドウ番号

他にもたくさんあるけど、あまり使い出が…。

ユーザー指定タイトルは XTerm 由来のウィンドウタイトルバー変更エスケープシーケンスに対応したアプリが設定した内容となります。

コピーモードのキーバインド

set-window-option -g mode-keys vi

ウィンドウの縦分割

ウィンドウの横分割

セッション・ウィンドウ・ペイン

tmux は以下の包含関係があります。

+- セッション -----------+
|                        |
|  +- ウィンドウ -----+  |
|  |                  |  |
|  |  +- ペイン ---+  |  |
|  |  |            |  |  |
|  |  |            |  |  |
|  |  |            |  |  |
|  |  +------------+  |  |
|  |                  |  |
|  +------------------+  |
|                        |
+------------------------+
  • 「セッション」は tmux new で作成されるある種のコンテナ(tmux サーバープロセス)です。
  • これに画面であるところの「ウィンドウ」が割り当てられます。
  • また画面内に複数(1~)の「ペイン」を割り当てられます。
  • 通常これは1:1:1で使用することになります。
  • tmux の場合「ペイン」の操作が難しく感じることがあるのは、作成(分割)だけでなく位置・サイズの指定といった部分にあります。
  • 少しずつ整理すれば使いこなしは簡単です。

tools/tmux (最終更新日時 2016-12-12 08:06:21 更新者 NorikatsuShigemura)