今回はtmuxについて記事を書きました。
私的なことを言うと、最近インフラよりの知見を貯めているからです!w
それはそうと、以前からtmuxについては、名前くらいしか知りませんでした。 (というか、この記事を書いているときもtmux歴まだ1ヶ月も経たないくらいです...w)
なので、入門として読んでくださると助かります!
「これからtmux使ってみよう!」
とか、
「基本設定ってどんなかんじになるうだ?」 など、疑問に思っている方向けになります。
では、さっそく基本情報から見ていきます。
※筆者のOSは、OS Xです。
概要
tmuxとは?と、まず思うことでしょう。何ができるのか?などなど...
tmuxとは、 ターミナルマルチプレクサです。 (※できるだけ個人の解釈でなく、公式の文を引用します。)
マルチプレクサとは、簡単に言うと、複数の信号を1つの信号として出力することです。 これは電子回路系のお話なので、もっとわかりやすくいうと、1つのコンソールで複数のコンソールを仮想的に展開できるということ。
多くの端末を作成することを可能にすることで、単一画面からアクセスし、制御することができます。 tmuxは、 画面を表示し、バックグラウンドで実行を続けてから、後で再接続できるとのこと。
よく、macのターミナルやitermなどで作業していると、複数のウィンドウを開いて作業していたことがありますが、 接続が切れてしまったり、どのウィンドウがどこのサーバーだったか見にくくて仕方ないときがありました。
これらをまとめて効率的に作業できるようにしてくれるのが、tmuxといったところ。
さっそく導入してみましょう。
導入
$ brew install tmux
インストールしたら、ヴァージョンを確認してみましょう。 ヴァージョンが確認できたら、正常にインストールできていると思います。
$ tmux -V tmux 2.8
起動
tmuxの起動は、$ tmux
で起動できます。
ローカルで実行するとお馴染みのホームディレクトリが展開されるかと思います。
また、終了するには、$ exit
です。
起動が確認できると、ウィンドウ下部に以下(ステータスバー)が確認できるかと思います。
ここまでではただ同じコンソールを展開しただけなので、tmuxの良さが全然わかりませんねw 少し起動してみましょう。
基本コマンド
起動してから、exit
しないで(セッションをデタッチ)ぬけてみましょう。
1, 起動: $ tmux
2, 起動してから: Ctr-b + d
[detached (from session 0)]
3, セッション確認: $ tmux ls
そうすると以下のようなセッションが確認できるかと思います。
0: 1 windows (created Wed Jan 23 14:32:44 2019) [204x62]
どうやら、0
がセッション名のようです。(もちろんセッション名は任意の名前に変更可能です。)
4, アタッチ: $ tmux a -t 0
これで再接続できたかと思います。
なんとなーくわかってきたでしょうか。 以下に、基本コマンドを書いておきます。 他にもコマンドはあるので、随時気になるコマンドはググってください!
# セッション一覧表示 $ tmux ls # セッションアタッチ(再接続) $ tmux a -t <session_name> # セッション終了 $ tmux kill-session -t <session_name> # tmux終了 $ tmux kill-server
.tmux.conf
ここからがさらに面白いところです。 tmuxというと、カスタマイズ性にとても優れているようです。 カスタマイズには、.tmux.confというファイルを作成し、そこに設定を記述します。
このファイルはホームディレクトリに作成します。(/Users/<user_name>
)
$ touch ~/.tmux.conf
このファイルに記述する内容ですが、けっこう個人に左右されるかと思います。
なので、ここでは必要最低限の設定を紹介します。(ウィンドウの分割など)
あとで、この設定を元に、独自の設定が探せるような状態の設定になればと思います!
# Ctr-bのキーバインドを解除 unbind C-b # prefixキーをC-qに変更 set -g prefix C-q # window分割("|": 縦, "-": 横) bind | split-window -h bind - split-window -v # re-size panes by vim movements bind -r H resize-pane -L 5 bind -r J resize-pane -D 5 bind -r K resize-pane -U 5 bind -r L resize-pane -R 5 # move by vim movements bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R # ######## SETTINGS status line # status line を更新する間隔を1秒にする #set-option -g status-interval 1 # status-right の最大の長さを指定 set-option -g status-right-length 120 set-option -g status-right '#H#(get_load_average_tmux)#{battery_icon}#{battery_percentage}#(get_ssid_tmux)%m/%d %a#[default] %H:%M' # ######## SETTINGS status line set -g @tpm_plugins ' \ tmux-plugins/tpm \ tmux-plugins/tmux-battery \ ' # Initialize tpm run-shell ~/.tmux/plugins/tpm/tpm
コメントに書いてある通りの設定になります。
ステータスバーの編集も可能です。自分の使いやすいようにカスタマイズしてみましょう。 バッテリー残量や日付などの設定が可能です。一応上記のファイルでは設定しています。
tpm
上記のファイルでは、tpm(Tmux Plugin Manager)という、tmuxのプラグイン管理ツールを使用しています。 インストールも簡単なので、使用してみるのがいいと思います。
インストールは以下。
$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
インストールしたら、.tmux.conf
にプラグインの名前を記述します。
上記ファイルでいうと、set -g @tpm_plugins
の部分ですね。
そして、必ずプラグインを使用するために、run-shell ~/.tmux/plugins/tpm/tpm
をファイルの最終行に記述します。
ここまで記述できたら、tmuxを起動し、prefix(上記ファイルでは、Ctr-q) + I
でインストールします。
次のtmux起動で適用されます。
また、プラグインのアップデートは、prefix + U
で、
prefix + alt + u
で、記述のないプラグインをアンイストールします。
Tips
- コンソール起動時に、自動でtmuxを起動(
.bash_profile
に記述)
if [ $SHLVL = 1 ]; then tmux fi