LoginSignup
2
3

More than 5 years have passed since last update.

過去に設定して設定ファイルから消したキーバインドをちゃんと消す方法【tmux】

Last updated at Posted at 2015-06-23

はじめに

最近tmux使い始めて、キーバインドの設定とかいろいろ試してみています。

一発で現在の設定内容をリロードする方法として有名なのは

<Prefix> + r => reload config file
bind-key r source-file ~/.tmux.conf \; display "Reloaded!"

として~/.tmux.confに書いておく方法です。便利ですね。

さて、本題ですが、そうやって設定ファイルで何度もキーバインドを変更していると、過去に設定して今は削除したキーバインドが生きたままになっていることに気づくかと思います。これは大変困ります。キーバインドを設定ファイルから消すたびにunbind-keyを増やしていたのでは、面倒くさくてかないません。そこで調べてみたのですが、

というのを見つけたので、共有しておきます。

どうするか

~/.tmux.conf

unbind-key -a

と書いておくと、すべてのキーバインドが無効になります(see man tmux)。ここで注意する必要があるのが、本当にすべてのキーバインドを無効にするので、自分でキーバインドを設定していないのにこれを書いてしまうと『詰む』ということです。なので、これと合わせてtmuxのデフォルトの設定をすべてコピペしておきましょう。この時点で絶対使いたくないキーバインドがあればコメントアウトしてしまえばいいです。

tmuxのデフォルトのキーバインドを以下に載せておきます(エスケープが必要なものは調整済み)。以下を~/.tmux/confの他のキーを設定する前の行(できるだけ上)にコピペしておけば、あとはこれらの行をコメントアウトしたり、自分のキーバインドを下に追加したりしていけば、設定ファイルに書かれていないキーバインドは全部無効になってくれます。少し設定ファイルは長くなりますが、自分が何をやっているのかがちゃんと分かるようになるので、その点ではむしろ良いことだと思います。

# unbind *all* keybindings
unbind-key -a

# all the regular tmux keys

bind-key C-b send-prefix
bind-key C-o rotate-window
bind-key C-z suspend-client
bind-key Space next-layout
bind-key ! break-pane
bind-key '"' split-window
bind-key '#' list-buffers
bind-key '$' command-prompt -I "#S" "rename-session '%%'"
bind-key % split-window -h
bind-key & confirm-before -p "kill-window #W? (y/n)" kill-window
bind-key "'" command-prompt -p index "select-window -t ':%%'"
bind-key ( switch-client -p
bind-key ) switch-client -n
bind-key , command-prompt -I "#W" "rename-window '%%'"
bind-key - delete-buffer
bind-key . command-prompt "move-window -t '%%'"
bind-key 0 select-window -t :0
bind-key 1 select-window -t :1
bind-key 2 select-window -t :2
bind-key 3 select-window -t :3
bind-key 4 select-window -t :4
bind-key 5 select-window -t :5
bind-key 6 select-window -t :6
bind-key 7 select-window -t :7
bind-key 8 select-window -t :8
bind-key 9 select-window -t :9
bind-key : command-prompt
bind-key \; last-pane
bind-key = choose-buffer
bind-key ? list-keys
bind-key D choose-client
bind-key L switch-client -l
bind-key [ copy-mode
bind-key ] paste-buffer
bind-key c new-window
bind-key d detach-client
bind-key f command-prompt "find-window '%%'"
bind-key i display-message
bind-key l last-window
bind-key n next-window
bind-key o select-pane -t :.+
bind-key p previous-window
bind-key q display-panes
bind-key r refresh-client
bind-key s choose-session
bind-key t clock-mode
bind-key w choose-window
bind-key x confirm-before -p "kill-pane #P? (y/n)" kill-pane
bind-key { swap-pane -U
bind-key } swap-pane -D
bind-key '~' show-messages
bind-key PPage copy-mode -u
bind-key -r Up select-pane -U
bind-key -r Down select-pane -D
bind-key -r Left select-pane -L
bind-key -r Right select-pane -R
bind-key -r M-1 select-layout even-horizontal
bind-key -r M-2 select-layout even-vertical
bind-key -r M-3 select-layout main-horizontal
bind-key -r M-4 select-layout main-vertical
bind-key -r M-5 select-layout tiled
bind-key -r M-n next-window -a
bind-key -r M-o rotate-window -D
bind-key -r M-p previous-window -a
bind-key -r M-Up resize-pane -U 5
bind-key -r M-Down resize-pane -D 5
bind-key -r M-Left resize-pane -L 5
bind-key -r M-Right resize-pane -R 5
bind-key -r C-Up resize-pane -U
bind-key -r C-Down resize-pane -D
bind-key -r C-Left resize-pane -L
bind-key -r C-Right resize-pane -R 

まとめ

これでtmuxが予期しない動きをするたびにunbind-keyを追加する苦行から開放された。とってもいい感じ。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3