tmuxおすすめプラグインの紹介
この記事は、SLP_KBITその2 Advent Calendar 2016の10日目の記事です。
はじめに
ここで紹介するtmuxのプラグインは、tmuxのバージョンが1.9以上である必要があります。(後述しているtmuxのプラグイン管理マネージャー含め)
(因みにtmuxのバージョンはtmux -V
で確認できます。)
もしプラグインが使えないという場合でも、最後の「おまけ」にはプラグインとは違うものを1つ紹介しているので、よかったら読んでみてください。
おすすめプラグイン
先におすすめのプラグインの動作などを紹介します。
インストール方法はその後の「プラグインのインストール」で紹介しています。
tmux-resurrect
このプラグインは現在アタッチしているtmuxのセッションを保存することができるものです。
また、そのセッションを消したとしても、簡単に復元することができます。
デモ
デモの中で、左下部分でカーソルをくるくる動かしているときが2回あります。
1度目は3つの全てのウィンドウを見せて、デタッチする直前のタイミング、
2度目はデタッチして今あるセッションを削除し、新たにセッションを作成した後です。
1度目のタイミングでセッションを保存、2度目のタイミングでセッションを復元させており、それぞれのタイミングで左下にメッセージが表示されています。
(メッセージが消えるのが早いので何か表示されたなーくらいしかわからないかも)
操作方法
- セッションの保存:
Prefix
+Ctrl-S
- セッションの復元:
Prefix
+Ctrl-R
保存されたセッションの情報
デフォルトでは~/.tmux/resurrect
下にセッションの情報を保持します。
その中にlast
というシンボリックリンクが作成され、復元の際にはそのリンク先のファイルに基づいて、セッションを復元するようです。
$ ls -l ~/.tmux/resurrect/ total 12 lrwxrwxrwx 1 vagrant vagrant 38 Dec 7 19:05 last -> tmux_resurrect_2016-12-07T19:05:05.txt -rw-rw-r-- 1 vagrant vagrant 105 Dec 7 19:04 tmux_resurrect_2016-12-07T19:04:38.txt -rw-rw-r-- 1 vagrant vagrant 170 Dec 7 19:04 tmux_resurrect_2016-12-07T19:04:56.txt -rw-rw-r-- 1 vagrant vagrant 248 Dec 7 19:05 tmux_resurrect_2016-12-07T19:05:05.txt
なので、「2つ前に保存したセッションを復元したい」とかはlast
のリンク先を変える必要がありそう...ちょっと面倒ですね。
複数のセッションの保存はできますが、復元の時に手間がかかるので、結果的に複数のセッションを扱う場合には向かないですね。
プラグインではないですが、このtmux-resurrectと似たことができるtmuxinatorというものがあります。
tmuxinatorは複数のセッションを管理しやすいので、こちらがいいという場合もあるかもしれません。(こちらはファイルを記述する必要がある点が少しデメリットかも)
tmuxinatorに関しては「おまけ」のところで紹介しています。
tmux-copycat
これはtmuxのペイン内から特定の文字列を探すことのできるプラグインです。
デモ
以下のデモでは"test"という文字列を探しています。
検索は下から上に順に行われていきます。
操作方法
- 検索:
Prefix
+Ctrl-/
-> 検索文字を入力 -><ENTER>
- 次の文字列へ進む:
n
- 前の文字列へ戻る:
N
プラグインのインストール
プラグインのインストールは、プラグイン管理マネージャーを使って行います。
tmuxにはプラグイン管理マネージャーとしてtpmというものがあります。
tpmのインストールやプラグインのインストールなどは以下のサイトにを見てください。
おまけ
tmuxinator
tmuxinatorは、先に紹介したプラグインtmux-resurrectと似た機能を持っており、とても便利です。
tmuxのバージョンは1.8が推奨となっているようですが、2.3でも問題なく使えました。
また、tmuxinatorはgemとしてインストールするため、Rubyがインストールされている必要があります。
また、環境変数にEDITOR
とSHELL
が設定されている必要があるので、注意しましょう。
ここでは基本的な使い方のみ紹介するので、インストール方法や詳細な使い方等は以下のサイトを参照してください。
tmuxのwindow, pane設定を一発で再現できるtmuxinatorが便利
tmuxinatorはtmux-resurrectとは違い、予め記述されたファイルに基づいて、セッションを作成します。
ファイルの記述をしなければならないのは多少面倒ですが、1つのサーバ上で複数のセッションを良く扱うといった場合にはこちらの方がよさそうです。
デモを「セッションの作成」のところに載せてるので、そちらから確認したほうが、tmuxinatorの便利さを早く知ることができると思います。
ファイルの作成
ファイルの作成には、まず
tmuxinator new <セッション名>
を実行します。
実行すると~/.tmuxinator
ディレクトリの下にファイルが作成され、そのファイルが自動で開かれます。(既に記述された状態で開かれますが、これを修正していきます)
ファイルの記述
ファイルはyaml形式での記述になります。
例えば以下のように記述したとします。
# ~/.tmuxinator/test.yml name: test root: ~/ windows: - editor: layout: even-horizon panes: - echo test - vim .tmux.conf - logs: layout: tiled panes: - pane1: - pane2: - pane3:
記述はwindows:
内に起動するウィンドウを指定し、panes:
内では起動するペインを指定します。
ペインの指定ではそのペインで実行するコマンドを指定するか、ペインの名前で指定することができます。
layout:
はそのウィンドウ上でのペインの並び方を指定しています。
具体的に、上記の内容では
- editorウィンドウで
- ペインを2つ作成
echo pane1
を1つのペインで実行vim .tmux.conf
をもう1つのペインで実行
- logsウィンドウで
- ペインを3つ作成
といった記述をしています。
1つのペインで複数のコマンドを実行するようにしたい場合は、panes:
内を次のように記述します。
panes: - pane1: - echo 1 - echo 2 - echo 3 - pane2:
セッションの作成
セッションの作成には
tmuxinator <セッション名>
を実行します。
実際にセッションを作成した例が以下です。
上のデモでは、tmuxのセッションが何もないところから、記述したファイルに従って、実際にセッションを作成しています。
ファイルに記述したとおりに、ウィンドウ、ペインが作成され、また、コマンドも実行されていることがわかると思います。