【入門】tmux始めてみる
はじめに
tmuxについて、基本的なことを理解して使えるようになるまでを解説していこうと思います。
tmuxとは
tmuxとは、端末多重化ソフトウェア(Terminal Multiplexer)です。
端末多重化ソフトウェアと言ってもわかりにくいですが、要は1つのターミナルを画面分割などをすることで複数のターミナルとして操作できるということです。
用語
tmuxを利用している時でに出てくる用語について解説します。このへんの用語がよくわからず挫折したことがあるので、まずは用語の意味を理解するのがいいと思います。
用語 | 説明 |
---|---|
セッション(Session) | tmuxが分割する最大の概念 複数のウィンドウを持つことができる |
ウィンドウ(Window) | 分割した時の画面全体を表す概念 複数のペインを持つことができる |
ペイン(Pane) | ウィンドウを分割した概念 |
アタッチ(Attach) | デタッチしたセッションに繋ぎ直すこと |
デタッチ(Detach) | セッションを切り離すこと でタッチしてもバックグラウンドで動き続けている |
プレフィックス(Prefix) | tmuxのショートカットを入力する前に入力するキーの組み合わせ デフォルトでは Ctrl+b |
イメージ的には以下のようになります。
できること
ざっくり以下のようなことができます。
- 1つのターミナル上で複数のターミナルを同時進行で作業できる
- 1つのターミナルをセッション、ウィンドウ、ペインに分割できる
- ターミナルを終了してもセッションを維持できる
- サーバにtmuxがあればsshしてても使える
- 設定ファイルで自分好みの設定にできる
ターミナルで画面分割をしながら作業している人は、tmuxのような端末多重化ソフトウェアを使っているはずです。
また、設定ファイルで色々カスタマイズできるので、初めは取っ付きにくいかもしれませんが、初めはデフォルトのままや誰かが公開している設定ファイルで初めてみて徐々に育てていくのがいいと思います。
インストール
Macでのインストールは以下の通りです。
1brew install tmux
基本的な使い方
よく使いそうなものだけ抜粋して紹介します。
.tmuc.conf
でカスタマイズすることでコマンドが一致しない場合もあるので注意してください。
以下が参考になります。
tmuxチートシート - Qiita
##コマンドライン指定# 新規セッション開始tmux# 名前をつけて新規セッション開始tmux new -s <セッション名># セッションの一覧表示tmux ls# 接続クライアント…
セッション
新規セッションを開始
1tmux
名前をつけてセッションを開始
1tmux new -s セッション名
セッションにアタッチ
1tmux a
セッションを終了
1tmux kill-session
tmuxを終了
1tmux kill-server
コマンド | 説明 |
---|---|
prefix + s | セッションの一覧 |
prefix + d | セッションをデタッチ |
ウィンドウ
コマンド | 説明 |
---|---|
prefix + c | ウィンドウを作成 |
prefix + 0-9 | ウィンドウの一覧 |
prefix + n | 次のウィンドウへ移動 |
prefix + n | 前のウィンドウへ移動 |
ペイン
コマンド | 説明 |
---|---|
prefix + % | 左右に分割 |
prefix + " | 上下に分割 |
prefix + カーソル | 指定方向に移動 |
prefix + o | 順に移動 |
その他
設定ファイルの読み込み
1tmux source 設定ファイルのパス
コマンド | 説明 |
---|---|
prefix + ? | キーバインド一覧 |
prefix + [ | コピーモード開始 |
設定
参考程度に私の.tmux.conf
を記載しておきます。
1# ---------------------------------------------------------
2# basic
3# ---------------------------------------------------------
4
5# tmux起動時のシェルをzshに
6set-option -g default-shell /bin/zsh
7
8# 256色表示可能に変更
9set-option -g default-terminal screen-256color
10set -g terminal-overrides 'xterm:colors=256'
11
12# PrefixをCtrl-1に変更
13set -g prefix C-q
14unbind C-b
15
16# ---------------------------------------------------------
17# status line
18# ---------------------------------------------------------
19
20# 更新する間隔を 1 秒
21set-option -g status-interval 1
22
23# window-status を中央揃えで配置
24set-option -g status-justify "centre"
25
26# status line の背景色を指定
27set-option -g status-bg "colour238"
28
29# status line の文字色を指定
30set-option -g status-fg "colour255"
31
32# statusの最大の長さを指定
33set-option -g status-left-length 20
34set-option -g status-right-length 60
35
36# status-left のフォーマットを指定
37set-option -g status-left "#[fg=colour255,bg=colour241]Session: #S #[default]"
38
39# status-right のフォーマットを指定
40set-option -g status-right "#[fg=colour255,bg=colour241] #h | LA: #(cut -d' ' -f-3 /proc/loadavg) | %m/%d %H:%M:%S#[default]"
41
42# window-status のフォーマットを指定
43set-window-option -g window-status-format " #I: #W "
44
45# カレントウィンドウの window-status のフォーマットを指定
46set-window-option -g window-status-current-format "#[fg=colour255,bg=colour27,bold] #I: #W #[default]"
47
48
49# ---------------------------------------------------------
50# mapping
51# ---------------------------------------------------------
52
53# vimのキーバインドでペインを移動
54bind h select-pane -L
55bind j select-pane -D
56bind k select-pane -U
57bind l select-pane -R
58
59# vimのキーバインドでペインをリサイズ
60bind -r H resize-pane -L 5
61bind -r J resize-pane -D 5
62bind -r K resize-pane -U 5
63bind -r L resize-pane -R 5
64
65# .tmux.confの読み込み
66bind-key r source-file ~/.tmux.conf\; display-message "$HOME/.tmux.conf reloaded!"
67
68# ---------------------------------------------------------
69# copy mode
70# ---------------------------------------------------------
71
72setw -g mode-keys vi
73
74# 'v' で選択開始
75bind -T copy-mode-vi v send -X begin-selection
76
77# 'V' で行選択
78bind -T copy-mode-vi V send -X select-line
79
80# 'C-v' で矩形選択
81bind -T copy-mode-vi C-v send -X rectangle-toggle
82
83# 'y' でヤンク
84bind -T copy-mode-vi y send -X copy-selection
85
86# 'Y' で行ヤンク
87bind -T copy-mode-vi Y send -X copy-line
88
89# 'C-p'でペースト
90bind-key C-p paste-buffer
下記を参考にしています。
tmux の status line の設定方法 - Qiita
status line の設定方法について調べたのでここにメモしておきます。status line の構成tmux の status line は下図のように 3 つの部分から構成されています。status-left の部分はデフォルトではセッション名が表示されています…
tmuxを必要最低限で入門して使う - Qiita
#はじめに今回は、端末多重化ソフトウェアのtmuxを学習していきます。これにより、ターミナル画面を複数開いたり、ターミナルソフト独自のショートカットキーを覚えてペインを分けたりするみたいな非効率的…
ターミナル(黒い画面)を分割して使う tmux 超入門
tmux に関する記事はちょくちょく書くものの、 tmux 導入そのものに関する記事はそういえば書いてなかったなーと。 というのも、ちょうど直近で tmux を含む環境構
まとめ
- tmuxを使うと1つのターミナルで画面分割しながら複数のターミナルを操作できる
.tmux.conf
でのプラグインは別途記事にします。
参考
- tmux/tmux: tmux source code
- 1. TMUX commands — TMUX Guide documentation
- hotkeys - What's the least conflicting prefix/escape sequence for screen or tmux? - Super User
- tmuxチートシート - Qiita