Help us understand the problem. What is going on with this article?

tmuxでターミナルをより便利に!

More than 1 year has passed since last update.

はじめに

ターミナルをより便利に使うことができるCLIアプリケーションであるtmuxについて記述しようと思います。

おすすめする読者

  • ターミナルでどんなことができるのか調べている人
  • ターミナル入門したいの人
  • ターミナル入門したばかりの人
  • ターミナルを便利にしたい人
  • ROS開発者
  • Vimmer

tmux入門

個人的な感想

ターミナルマルチプレクサの一つで、類似ソフトとしてscreenなどがある。
シェルを分割することで、複数の処理を同時に行いやすくできる。

  • ターミナルに搭載されているようなタブ機能より並列作業しやすい
  • iTermにある画面分割よりもキーボードのみで操作しやすい(ホームポジションから離れない)
  • 複数のターミナルを起動するよりもAlt+Tabでのウィンドウ移動を邪魔しない

というイメージである。

  • ROS開発のために複数のターミナルを立ち上げる必要のある人
  • Vimのためにシェルを使う人 にはtmuxでなくともターミナルマルチプレクサは非常に便利なツールと思われる。

実際に私はエディタはVimを使っており、ターミナルを上下に分割して、

  • 上(7,8割):Vim
  • 下(2,3割):コンパイル・実行・結果確認

のように分割して作業を行なっている。割合自体は気分や確認したい出力の量などで変えている。さらに、他のディレクトリに移動したいときには横に分割して作業を一時的に中断している。

下に、使用例の画面を載せる。普段は全く使わないが、時間を表示することも可能である。

Screenshot from 2018-10-30 22-53-22.png

インストール方法

Ubuntu、Macにおいて以下のコマンドを実行するだけでインストール完了する。

for_ubuntu
$ sudo apt install tmux
for_mac
$ brew install tmux

起動方法

run_tmux
$ tmux

基本操作

そのまま、普通のターミナルとして扱うことができます。

ここからが重要なのですが、
tmuxの操作はPrefixキー + 何かというキーマッピングで行います。

Prefixキーは標準ではCtrl+bとなっております。また、好みに応じて変更することができますが、その際に他のキーマッピングと衝突してしまわないように注意してください。(私はホームポジションから手を離さないためにCtrl+fとして設定)

コマンドリスト

コマンド 動作
Prefix + % 横に新しいペインを作成
Prefix + " 縦に新しいペインを作成
Prefix + x ペインを削除
Prefix + & ウィンドウの削除
$ exit (実質)ペインの削除
Prefix + o 次のペインへ移動
Prefix + ← ペインの移動(左)
Prefix + ↑ ペインの移動(上)
Prefix + → ペインの移動(右)
Prefix + ↓ ペインの移動(下)
Prefix + [ コピーモード
q コピーモード終了

普段はこれだけで作業していて、とても便利に使えています。

時刻表示方法

全く使っていませんが、Prefix + tでできます。先ほどの画像はこのコマンドで表示しました。

tmuxのカスタマイズ

tmuxは~/.tmux.confというファイルでカスタマイズできます。

ここでは、私自身が普段使用している.tmux.confを例として見ようと思います。ネットで漁って作成したものであるため、自分はどの設定が好きなのかで自由に変更すると便利であると思います。特に、Prefixキーは好みが分かれると思います。

.tmux.conf
#prefixキーをC-fに設定
set -g prefix C-f

# マウス操作を有効にする
set-option -g mouse on

# ウィンドウのインデックスを1から始める
set -g base-index 1

# ペインのインデックスを1から始める
setw -g pane-base-index 1

# 設定ファイルをリロードする
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# \でペインを縦分割
bind \ split-window -h

# -でペインを横分割
bind - split-window -v

# Vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

# Vimのキーバインドでペインをリサイズする
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

# コピーモードの設定(Vim風にする)
setw -g mode-keys vi

# 最後までスクロールダウンするとコピーモードを抜ける
bind-key -n WheelDownPane select-pane -t = \; send-keys -M

#ステータスバーをトップに配置する
set-option -g status-position top

#左右のステータスバーの長さを決定する
set-option -g status-left-length 90
set-option -g status-right-length 90

# #H => マシン名
# #P => ペイン番号
# 最左に表示
set-option -g status-left '#H:[#P]'

# Wi-Fi、バッテリー残量、現在時刻
# 最右に表示
set-option -g status-right '#(get_ssid) #(battery -c tmux) [%Y-%m-%d(%a) %H:%M]'

# ステータスバーを1秒毎に描画し直す
set-option -g status-interval 1

# ステータスバーを1秒毎に描画し直す
set-option -g status-interval 1

#PCのステータスバーの追加
set-option -g status-right '#(wifi) #(battery --tmux) [%Y-%m-%d(%a) %H:%M]'

#256 color terminal
set -g default-terminal "screen-256color"

コメントがついているので操作はわかるかもしれませんが、念の為コマンドリストとして表にしておきます。

Prefixキー = Ctrl + f

コマンド 動作
Prefix + \ (¥) 横に新しいペインを作成
Prefix + - 縦に新しいペインを作成
Prefix + x ペインを削除
$ exit (実質)ペインの削除
Prefix + o 次のペインへ移動
Prefix + h ペインの移動(左)
Prefix + j ペインの移動(上)
Prefix + k ペインの移動(右)
Prefix + l ペインの移動(下)
Prefix + ← ペインのサイズ変更(左)
Prefix + ↑ ペインのサイズ変更(上)
Prefix + → ペインのサイズ変更(右)
Prefix + ↓ ペインのサイズ変更(下)
Prefix + [ コピーモード (vim移動)
q コピーモード終了
マウスクリック ペインの選択
コロコロを上に回す コピーモード移行
コロコロで一番下まで戻る コピーモード終了

個人的に、このキーマッピングは気に入っております。移動をvim的にするのはよく見かけますが、Ctrl + fはあまり見かけないので、よかったら試してください。CapsLockCtrlにしてこの配置にするとホームポジションから小指をクイッと移動するとPrefixが押せるので便利です。また、標準ではペイン分割はShiftを押す必要がありますが-\にすると暇になった右手ですぐにキーを押すことができます。

ペインまたはtmuxを閉じる際は私は$ exitを使用しています。

最後に

最近はtmuxの設定は全く触れていないので、他に便利なものがあれば教えていただけると喜びます。

ysuzuki19
電気電子系の大学院生です. 詳しい人の意見を仰ぐ事とモチベ維持のためにQiitaに少しづつ上げていけたらなと思っています. Qiitaで自分が書いた記事をブラッシュアップしつつGithubPagesに移行していこうと試みているところです。
https://ysuzuki19.github.io
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした