はじめに
Linuxでkubernetesをいじっていた時にtmuxがとっても便利だったので使い方を以下に整理しました。
tmuxとは
1つのターミナルで複数のターミナルセッションを管理できるツールです。これにより、1つのターミナルウィンドウ内で複数のシェルセッションを実行し、それらを分割表示したり、バックグラウンドで実行したりすることができます。
主な機能は以下の通りです
- 複数のセッション管理
一つのターミナルウィンドウ内で複数のセッションを作成し、切り替えることができます - ウィンドウとペインの分割
一つのセッション内でウィンドウを作成し、それをさらに縦や横に分割して複数のペインを表示できます - セッションのデタッチとアタッチ
セッションを一時的にデタッチして、後で再度アタッチすることができます。これにより、長時間実行するタスクを中断することなく続行できます - セッションの持続性
リモートサーバーでの作業中に接続が切れても、セッションが保持されるため、再接続後に作業を再開できます
用語
-
セッション
一つのプロセスとかウィンドウみたいなイメージ。 -
ウィンドウ
タブみたいなイメージ。 -
ペイン
タブの中からさらに画面分割するみたいなイメージ。
よく使うコマンド
新規セッション作成&そこに入る
tmux
セッション一覧
tmux ls
セッション、ウィンドウ、ペインの終了
exit
(セッションの状態を維持したまま)終了
Ctrl + b → d
Ctrl + bをprefixといい、prefixを押しても画面上何も変わらないが、その後に色々なキーと組み合わせることでtmux上の操作が可能な仕組み。
prefixを変更する
~/.tmux.confを新規作成し、以下を記載する(例)
set -g prefix C-q
unbind C-b
# | でペインを縦に分割する
bind | split-window -h -c '#{pane_current_path}'
# - でペインを横に分割する
bind - split-window -v -c '#{pane_current_path}'
# Vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# VimのキーバインドでPaneをリサイズする
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
上記の後、以下を実行する。
tmux source-file ~/.tmux.conf
セッションに再接続
tmux a
セッションに名前を付けて、そこに接続
tmux new -s work1
名前をつけたセッションに接続
tmux a -t work1
ウィンドウの作成
prefix → c
ウィンドウの移動
prefix → ウィンドウ番号
ウィンドウの削除
prefix → &
ペインを上下分割
prefix → “
ペインを左右分割
prefix → %
ペインを移動
prefix →矢印キー
ペインのサイズ変更
prefix →Alt+矢印キー
時計を表示
prefix → t
全てのペインに対して操作をする方法
# シンクロの開始
tmux set-window-option synchronize-panes on
# 複数ペインに同じ入力が行われる
# シンクロの終了
tmus set-window-option synchronize-panes off
参考