【入門】tmux始めてみる

2021.10.25
2024.03.24
開発環境

はじめに

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チートシート - Qiita

コマンドライン指定 # 新規セッション開始 tmux # 名前をつけて新規セッション開始 tmux new -s <セッション名> # セッションの一覧表示 tmux ls # 接続クライアントの一覧表示 tmux lsc # セッションを再開 ※-t <対象セッ...

セッション

新規セッションを開始

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

tmux の status line の設定方法 - Qiita

status line の設定方法について調べたのでここにメモしておきます。 status line の構成 tmux の status line は下図のように 3 つの部分から構成されています。 status-left の部分はデフォルトではセッション名が表示されて...

tmuxを必要最低限で入門して使う - Qiita

tmuxを必要最低限で入門して使う - Qiita

はじめに 今回は、端末多重化ソフトウェアのtmuxを学習していきます。これにより、ターミナル画面を複数開いたり、ターミナルソフト独自のショートカットキーを覚えてペインを分けたりするみたいな非効率的な開発環境を改善していきます。 タイトルの「必要最低限」とは、これらの新しい...

ターミナル(黒い画面)を分割して使う tmux 超入門

ターミナル(黒い画面)を分割して使う tmux 超入門

tmux に関する記事はちょくちょく書くものの、 tmux 導入そのものに関する記事はそういえば書いてなかったなーと。 というのも、ちょうど直近で tmux を含む環境構築をする機会があって、 「あーついでにチートシート用意してもいいなあ」と思って、手元にメモ残してたのでした。 tmux のこれだけ読めば使える記事が手元に1つあってもいいかなって思ったので雑に書きます。 ターミナルでやるタスクは多い、分割したい ターミナル(黒い画面)使ってますか?僕はたくさん使ってます。 こんな感じで 分割して 使ってます!(最近さくっと動画キャプチャの術を憶えたので!) ターミナルが行えるタスクというのはそれなりに多いと思いますが、 ターミナルのつらいところってどの辺にあるでしょうか? 毎回別のウィンドウを立ち上げるのつらい 実行が終わるのを待つのがもったいない! なんかログが流れて行っちゃったけど、エラーのところコピペしてググりたかった・・・ いずれもあるあるです。 だったらターミナルを分割しよう! 上を見ると一目瞭然なんですが、 ターミナルを分割すると、 毎回別のウィンドウを立ち上げなくてすむ し、 何か実行してる最中に 並行して別のコマンドを打って作業する こともできちゃいます。 まだターミナルを複数立ち上げちゃってる人は、 これを機会に設定しちゃいましょう! tmux とは何なのか、どういう位置付けなのか まずターミナルを分割してくれるツールのことを、 ターミナル・マルチプレクサ (Terminal multiplexer) といいます。 どんな種類があるかというと・・・ screen (or GNU screen) Byobu tmux この辺にずらずら紹介されてますね! Terminal multiplexer - Wikipedia en.wikipedia.org 今回は最後の tmux (ティーマックス) を導入していきます! tmux でできること Home tmux source code. Contribute to tmux/tmux development by creating an account on GitHub. github.com

まとめ

  • tmuxを使うと1つのターミナルで画面分割しながら複数のターミナルを操作できる

.tmux.confでのプラグインは別途記事にします。

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee