tmux導入メモ

自宅PC環境でLinuxデスクトップを導入するのに合わせて、tmuxを使うようになったので自分用にメモ。

使い方

tmuxを使い始めたので基本的な機能の使い方とかを整理してみた - 完熟トマト を熟読した。自分の使っている環境をイメージできるくらいには読んで試しておさえてみました。

tmux.conf

今のところ設定にはそんなにこだわっていないので、行数も割と少ないのかなと感じています。

~/.tmux.conf 設定
# -----------------------
# Basic Config
# -----------------------
# <prefix>キーを<C-b>から<C-s>に変更
unbind C-b
set -g prefix C-s
bind-key C-s send-prefix
# 256カラー&バッファスクロールを有効化
set -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256:smcup@:rmcup@'
# Escapeキーを押したときの遅延をなくす
set -sg escape-time 0
# マウスを有効化
setw -g mouse on
# ヒストリのサイズを大きくする
set -g history-limit 5000
# インターバルの間隔を空けておく
set -g status-interval 10
# ステータスラインを変更
set -g status-right '"#H" %Y-%m-%d(%a) %H:%M'

# -----------------------
# プラグイン設定
# -----------------------
# tmuxのplugin manager
set -g @plugin 'tmux-plugins/tpm'
# PCを再起動してもセッションを復帰できるようにする
set -g @plugin 'tmux-plugins/tmux-resurrect'
# tmux-resurrectを自動で操作する
set -g @plugin 'tmux-plugins/tmux-continuum'
# tmuxのヤンクをOSのクリップボードと共有する
set -g @plugin 'tmux-plugins/tmux-yank'
# tmux実行時に自動的セッションをリストア
set -g @continuum-restore 'on'

# tmuxのプラグインマネージャーを有効化
run '~/.tmux/plugins/tpm/tpm'

設定を変更したら <prefix> + d でデタッチした後、 $ tmux source ~/.tmux.conf で反映させます。

tmuxのprefixキーをどうするのか問題

前提としてVimのキーバインドに影響を及ぼしたくないので、tmuxデフォルトのprefixである <C-b> は変更する必要がありました。

そこでまずVimで <Ctrl> キーを使う操作は何があるか調べました。 GitHubのdotfilesを見たり、Twitterを眺めたりしているといくつか候補は挙げられていましたが、 実質的に候補となるのは次の3つしかありませんでした。

  • <C-j>

  • <C-k>

  • <C-s>

この中で自分が選択できたのは <C-s> です。 前の2つはすでにVimのプラグインや、pecoのキーバインドとして設定していたからです。

既存の設定をつぶしてよければ <C-a>, <C-t> が押しやすそうではありましたが、 ターミナルでの移動やVimのタグスタックの使用に影響がでるので断念。

いざ <C-s> に設定してみたところ、どこにもぶつかってないようなのでいい感じです。 (Emacsのことは知らないのですが、自分の知ってるEmacs使いはターミナル上でEmacsは使わないらしいので問題なさそう)

prefixを設定するにあたり Vim で使える Ctrl を使うキーバインドまとめ - 反省はしても後悔はしない はすごく参考になりました。 @c0hama さんありがとうございます。

prefixキー変更に伴い端末ロックを無効化

ターミナルで <C-s> を押すと、ターミナルの出力がロックされました。 しかし出力がとまっているだけで、キー入力自体は受け付けていて紛らわしいので無効化しておきます。 無効化しなくても <C-q> を押すと解除されますが、忘れていたことにまた戸惑いそうなので設定。

~/.bashrc 設定
stty stop undef   # <C-s> によるターミナルロックを無効にする

所感

CLIのツールを導入するときはGUIのツールとは別の覚えることがあるけど、自分の手にしっくりくるようにいじれるのがいいよなーと。 ただ設定やプラグインは必要なものに絞っておかないと余計なところにハマったりするので、そのへんはよしなにしたいところです。