tmux basic guide
tmuxは、ターミナルでの作業を強化し、セッションやウィンドウの管理、ペイン(画面)の分割、ショートカットを利用して効率的な作業を可能にするツールです。以下はtmuxの基本的な使用法と設定に関するガイドです。
インストール
tmuxをインストールするには、以下のコマンドを使用します。
設定ファイル(.tmux.conf)
.tmux.confはtmuxの設定ファイルで、カスタマイズ可能な多くのオプションがあります。これを作成または編集することで、自分の好みに合わせた設定を行えます。
セッションの操作
tmuxはセッションと呼ばれる仮想環境を提供します。以下はセッションの操作方法です。
- tmux: tmuxを起動します。
- tmux attach -t <セッション番号>: 指定した番号のセッションにアタッチします。
- tmux attach -t <セッション名>: 指定したセッション名にアタッチします。
- tmux kill-session -t <セッション番号>: 指定した番号のセッションを終了します。
- tmux kill-session -t <セッション名>: 指定したセッション名を終了します。
ショートカット
tmuxではショートカットを使用して機能を呼び出します。デフォルトのprefix
キーはCtrl+B」ですが、設定ファイルで変更できます。
まとめ
prefix
+ % : 画面を横に分割します。prefix
+ " : 画面を縦に分割します。prefix
+ C : 新しいウィンドウを作成します。ウィンドウはデフォルトで0からカウントされますが、設定で変更可能です。prefix
+ 1 : 1番目のウィンドウを表示します。prefix
+ Z : 分割された画面の最大化と最小化を切り替えます。prefix
+ Q + 番号 : 指定した番号のペインに移動します。"q"を押すだけで番号が表示されます。prefix
+ SPACE : ペインの配置を提案してくれます。例: 横4つ、縦4つ、上1つ下3つ、左1つ右3つ、上下左右1つずつなど。prefix
+ D : セッションをデタッチします。prefix
+ [ : コピーモードを開始し、カーソルを移動します。Spaceキーで開始地点を、Enterキーで終了地点を確定します。prefix
+ ] : コピーしたテキストをペーストします。設定ファイルでviライクなコピーが可能で、クリップボードへの反映も設定できます。
ペイン(画面)の分割・移動・レイアウト・最大化(最小化)
prefix
+ % : 画面を横に分割します。prefix
+ " : 画面を縦に分割します。prefix
+ Q + 番号 : 指定した番号のペインに移動します。"q"を押すだけで番号が表示されます。prefix
+ SPACE : ペインの配置を提案してくれます。例: 横4つ、縦4つ、上1つ下3つ、左1つ右3つ、上下左右1つずつなど。prefix
+ Z : 分割された画面の最大化と最小化を切り替えます。
ウィンドウ
prefix
+ C : 新しいウィンドウを作成します。ウィンドウはデフォルトで0からカウントされますが、設定で変更可能です。prefix
+<number>
:<number>
番目のウィンドウを表示します。
セッションのデタッチ
作業を一時停止してバックグラウンドでセッションを残すには、以下を使用します。
prefix
+ D : セッションをデタッチします。
テキストのコピー
tmuxでテキストをコピーする方法については以下の通りです。
prefix
+ [ : コピーモードを開始し、カーソルを移動します。Spaceキーで開始地点を、Enterキーで終了地点を確定します。prefix
+ ] : コピーしたテキストをペーストします。設定ファイルでviライクなコピーが可能で、クリップボードへの反映も設定できます。
クリップボードの共有
tmuxでクリップボードを共有するために、xselをインストールし、.tmux.confに以下の設定を追加します。
インストール
.tmux.confに記載
# コピーしたテキストをクリップボードに反映
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "xsel -ip && xsel -op | xsel -ib"
bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "xsel -ip && xsel -op | xsel -ib"
# マウスで選択した範囲をコピー
bind -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe-and-cancel "xsel -ip && xsel -op | xsel -ib"
私の.tmux.conf
# prefixキーをC-aに変更する
set -g prefix C-a
# C-bのキーバインドを解除する
unbind C-b
#マウス操作を有効にする
set-option -g mouse on
# スクロールアップするとコピーモードに入る
bind-key -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
# 最後までスクロールダウンするとコピーモードを抜ける
bind-key -n WheelDownPane select-pane -t= \; send-keys -M
# ウィンドウのインデックスを1から始める
set-option -g base-index 1
# ペインのインデックスを1から始める
set-window-option -g pane-base-index 1
# 画面の分割: terminatorと揃えた
bind C-O split-window -v
bind C-E split-window -h
# copy-pipe と競合する場合があるので無効化
set -s set-clipboard off
# コピーモード中に Vim 風に v で選択範囲を定める
bind -Tcopy-mode-vi v send -X begin-selection
# コピーモード(vi)を有効化
set-window-option -g mode-keys vi
# マウスをドラッグして選択範囲を定め、それをヤンクしてコピーモードを終了する
bind -Tcopy-mode-vi MouseDragEnd1Pane send -X copy-pipe-and-cancel "xsel -ip && xsel -op | xsel -ib"
#set -s set-clipboard external
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "xsel -ip && xsel -op | xsel -ib"
bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "xsel -ip && xsel -op | xsel -ib"