おはようエンジニア

まともなエンジニアになりたい

tmuxのすすめ

今回は tmux についての記事です。

私自身まだ十分に tmux を活用できていませんが、導入してからターミナル生活がとても快適になったので、普段どんな風に使っているかを書いていきます。

tmuxについて

tmuxは端末多重化ソフトウェアです。 詳細な説明は検索するとたくさん出てくるので割愛します。 ↓のリンクは私が導入するときに参考にした記事です。

qiita.com

私は1つのセッションの中で2~3つのウィンドウを作り、それを2~6つのペインに分割して使っています。

prefixキーについて

tmuxの機能は [prefixキー] を一度押した後 [特定のキー] を押すことで実行できます。

prefixキーのデフォルトはCtrl-bです。私はCtrl-gに変更しています。

tmux.confの設定

~/.tmux.conf に設定を書くことができます。

# prefixキーをC-gに変更する
set -g prefix C-g

# C-bのキーバインドを解除する
unbind C-b

おすすめ機能

導入した後にまずこれだけ使ってほしいという機能を紹介します。

その1: ウィンドウの分割

操作 デフォルト 私の設定
ウインドウを上下に分割 prefixキー → " prefixキー → -
ウインドウを左右に分割 prefixキー → % prefixキー → /

上下分割の-は横線で分けるイメージ、左右分割の\は縦線で分けるイメージです。

tmux.confの設定

bind - split-window -v
bind / split-window -h

その2: ペイン移動

操作 デフォルト 私の設定
左のペインに移動 prefixキー → Left prefixキー → Ctrl-h
上のペインに移動 prefixキー → Up prefixキー → Ctrl-j
下のペインに移動 prefixキー → Down prefixキー → Ctrl-k
右のペインに移動 prefixキー → Right prefixキー → Ctrl-l

prefixキーのあとの設定をCtrl+h,j,k,l にすることによって以下の例のように少し移動が楽に(?)なります。

  1. Ctrlgを同時押し
  2. gだけ離す
  3. hを押す → 上のペインに移動完了

tmux.confの設定

bind C-h select-pane -L
bind C-j select-pane -D
bind C-k select-pane -U
bind C-l select-pane -R

その3: ペイン最大化

操作 デフォルト 私の設定
ペイン最大化/元に戻す prefixキー → z 変更なし

選択中のペインをウィンドウいっぱいに拡張します。

該当のペインに移動して最大化、編集したら戻ったらまた次のペインへ...というような使い方をよくしています。

最後に私のtmux.confを貼って終わります。

tmux.conf

# prefixキーをC-gに変更する
set -g prefix C-g

# C-bのキーバインドを解除する
unbind C-b

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

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

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

# 画面分割
bind - split-window -v
bind / split-window -h

# vimキーバインドでペインを移動する
bind C-h select-pane -L
bind C-j select-pane -D
bind C-k select-pane -U
bind C-l select-pane -R

# 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

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

# アクティブなウィンドウの色
set-window-option -g window-status-current-fg colour16
set-window-option -g window-status-current-bg colour178

# ペインのボーダーの色
set-option -g pane-border-fg black #base02
set-option -g pane-active-border-fg brightgreen #base01

# ステータスバーの位置を上にする
set-option -g status-position top

# status line の背景色を指定する
set-option -g status-bg "colour235"

# status line の文字色を指定する
set-option -g status-fg "colour255"

# status-left の最大の長さを指定する
set-option -g status-left-length 20

# status-left のフォーマットを指定する
set-option -g status-left "#[fg=colour255,bg=colour241]Session: #S #[default]"

# status-right の最大の長さを指定する
set-option -g status-right-length 60

# status-right のフォーマットを指定する
set-option -g status-right "#[fg=colour255,bg=colour241] #h | %m/%d %H:%M:%S#[default]"

# window-status のフォーマットを指定する
set-window-option -g window-status-format " #I: #W "

# カレントウィンドウの window-status のフォーマットを指定する
set-window-option -g window-status-current-format "#[fg=colour255,bg=colour27,bold] #I: #W #[default]"

# コピーモードでviのキーバインドを使用する
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T vi-copy V send-keys -X select-line
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"