tmuxのキーバインドを変更 .tmux.confの基本設定

   2017/05/01

tmuxは特に設定をすることなく、そのままで凄く便利なのですが、キーバインドや初期挙動などの設定を.tmux.confに記述しておくことによって更に使いやすくできます。お好みのカスタマイズができるよう設定方法を紹介していきます。 まだ使ったことが無い方は、tmuxの基本的な使い方を参考にしてみて下さい。 インストールするには、tmuxの概要とインストールを参考に。 また、便利な使い方も試してみて下さい。 ここでは、以下の環境での使用を前提にしています。

  • CentOS6.8 x86_64
  • tmux-2.3

.tmux.confの設定

まず、.tmux.confというファイル名で、自分のホームディレクトリにファイルを作成します。 このファイルに設定を記述していくのですが、set-optionというコマンドを使って記述していきます。設定オプションには3種類(ServerオプションSessionオプションWindowオプション)の適用範囲が存在します。その適用範囲を意識しながら設定していくことになります。

tmuxのServerには、一セットのglobalオプションがあり、そのオプションは特定のWindowやSessionのみに適用されるものではありません。 set-optionは、-s 付きで設定するとServerオプションとなります。 (Prefix キーと:)で show-options -sと入力すると設定されているServerオプションを一覧表示できます。(※以下の画像は、:show-options -sと入力したときの出力)

tmux_show-options-s

各Sessionは、独自のSessionオプションを一セット持つことが可能です。 また、全Sessionを対象としたglobalなSessionオプションが一セット存在します。globalなSessionオプションは、各Sessionに継承されますが、独自のSessionオプションで設定を上書きすることができます。set-optionは、(-sまたは-wを付けないで)で設定するとSessionオプションとなります。 -g を付け設定すると全Sessionが対象となります。 Sessionオプションは、(Prefixキーと:)で show-optionsと入力すると一覧表示できます。 (※以下の画像は、:show-options -gと入力したときの出力)

tmux_show-options-g

同様に各Windowに、一セットの独自Windowオプションを設定できます。 また、全Windowを対象としたglobalなWindowオプションが一セット存在します。globalなWindowオプションは、各Windowに継承されますが、独自のWindowオプションで設定を上書きすることができます。set-optionは、-w付きで設定すると(set-window-optionと同等になる)Windowオプションとなります。-g を付け設定すると全Windowが対象となります。Windowオプションは、(Prefix キーと:)でshow-window-optionsと入力すると一覧表示できます。(※以下の画像は、:show-window-options -gと入力したときの出力)

tmux_show-window-options-g

Prefixキーの設定

私が、まず一番最初に設定した項目は、Prefixキーの設定です。 デフォルトの C-b でも良いのですが、Prefixキーはtmuxで一番多くタイプすることになりますので、なるべく手の負荷にならないように別のキーを割りあてています。多くのプログラマと同様に、普段から英語キーボードを使用していて、左端にあるCaps lockキーはCtrlに変更しています。左手の小指でCtrlを押しますので、もう一つのキーは、右手で押せるキーである方が楽です。いろいろ試した結果、vim等で他の機能とぶつかっていない C-k にすることにしました。 私は、もう何年も C-k をPrefixキーにしているので、他のキーに割当るのは厳しいです。 自分にとって違和感のないPrefixキーを割りあててみて下さい。 .tmux.confには以下のように記述します。 #からスタートする行はコメントになります。

## 既定のPrefixキー(Ctrl+b)の割り当てを解除
unbind-key C-b
## Ctrl+iをPrefixキーにする (*prefixはSessionオプション)
set-option -g prefix C-k
bind-key C-k send-prefix

コピー&ペースト等で使うキーバインドをviに設定

デフォルトのキーバインドが、emacsですのでvi派の方は、以下を.tmux.confへ追記して下さい。例えば、コピー&ペーストでテキストを選択する際にviのキーバインドでの操作に変更となります。※Windowオプション。

#キーバインドをviに変更
set-window-option -g mode-keys vi

ペーストバッファ数の変更

ペーストバッファ数を設定します。 新しく追加したバッファは、スタックに積み上げられていき古いものから上書きされていきます。 ※Serverオプション。

#ペーストバッファ数(初期値:20)
set-option -s buffer-limit 100

Windowのスクロールヒストリの最大行数

Windowのスクロールヒストリを設定します。 新しく作られたWindowのみに適用され、既に存在するWindowには適用されません。※Sessionオプション。

#Windowスクロールヒストリの行数指定
set-option -g history-limit 5000

Windowの開始番号指定

Window番号は、デフォルトで0スタートになります。1からスタートした方が直感的でしたら設定してみて下さい。※Sessionオプション。

#Window番号を1から開始
set-option -g base-index 1

メッセージ表示時間設定

ステータスバーにメッセージを表示する(display-time)時間がデフォルトで 750ミリ秒、 インジケータをPaneに表示する(display-pane-time)時間が1000ミリ秒に設定されています。 短すぎるので10秒に変更。※Sessionオプション。

#メッセージ表示時間指定
set-option -g display-time 10000
set-option -g display-panes-time 10000

Window名の自動設定

Windowの名前は、自分で設定したいので自動設定をoff。※Windowオプション

#Wondow名の自動設定off
set-window-option -g automatic-rename off

ステータスバーの設定

デフォルトのステータスバーでも特に気にならないですが、好きなようにカスタマイズもできます。#[] は、色や特徴の変更を指定する特別な文字列になります。例えば、#[fg=red,bright]は、前面(文字)を明るい赤に設定します。 #Sはセッション名、#Hはホスト名を出力します。

#左端ステータスバーの設定
set-option -g status-left “#[fg=colour222]\[#S\] ”
set-option -g status-left-length 20
#右端ステータスバーの設定
set-option -g status-right “#[fg=colour222,bold]#H”
set-option -g status-right-length 100
set-option -g status-fg default
set-option -g status-bg colour239
set-option -g status-attr default
set-option -g status-left-fg default
set-option -g status-left-bg colour24
set-option -g status-left-attr default
set-option -g status-right-fg colour115
set-option -g status-right-bg colour24
set-option -g status-right-attr bold
# ウィンドウ一覧部における現在非アクティブなウィンドウの項目の表示
set-window-option -g window-status-fg white
set-window-option -g window-status-bg default
set-window-option -g window-status-attr default
# ウィンドウ一覧部における現在アクティブなウィンドウの項目の表示
set-window-option -g window-status-current-fg white
set-window-option -g window-status-current-bg colour24
set-window-option -g window-status-current-attr bold

上記の設定を追加すると以下のようなステータスバーになります。

tmux_customized_status_bar

Windowのキーバインド設定と移動

よく使いそうなコマンドを、入力しやすいキーに変更してみました。 Prefixキーとoキーで新しいWindowを開く。

#Windowの作成
unbind c
bind o new-window

PrefixキーとnキーでWindow名の変更。

#Window名の変更
unbind n
unbind ‘,’
bind n command-prompt “rename-window ‘%%'”

Prefixキーと C-l キーで右側のWindowに移動、Prefixキーと C-h キーで左側のWindowに移動。

#Windowの移動
bind C-l next-window
bind C-h previous-window

Paneのキーバインド設定と移動

vimのウィンドウ分割に似せて、Prefixキーと v キーで縦にPaneを分割。 Prefixキーと s キーで水平にPaneを分割。

#Paneの分割
unbind ‘”‘
unbind %
bind v split-window -h
bind s split-window

vimに似せて、Prefixキーと l キーで右のPaneへ移動。 Prefixキーと h キーで左のPaneへ移動。 Prefixキーと j キーで上のPaneへ移動。 Prefixキーと k キーで下のPaneへ移動。

#Paneの移動
bind l select-pane -R
bind h select-pane -L
bind k select-pane -U
bind j select-pane -D

あと是非設定しておいた方が便利なのがPaneをマウスで選択可能にするオプション。 マウスでPaneをクリックすれば選択できます。 また、Paneの境界線をドラッグすればPaneのサイズ変更が可能です。※Sessionオプション。

#マウスクリックでPane選択
set-option -g mouse on

tmux_mv_pane_mouse

バッファーのキーバインド設定

Prefixキーと=キー でバッファリストを表示する代わりに、Prefixキーとbキーの組み合わせを設定。

#ペーストバッファーのキーバインド設定
bind b choose-buffer

まとめ

どうでしたでしょうか。 このくらいの設定をいれて、使い込んでみて下さい。 もうtmux無しでは生活できなくなるのでは?

  • このエントリーをはてなブックマークに追加
  • Pocket

この記事へのコメントはこちら