tmuxのコピーモードについていろいろwebに情報が散逸しているので、自分用にまとめる。
なおキーバインドの設定はvim使い向けです
※2020/10/21追記 一部キーバインドの設定が間違っていたので修正
環境
- Mac OSX 10.14.5
- tmux 3.1b
コピー時の流れ
この記事に書いてある設定をすると、以下のような流れでコピーを行える
- prefixキー + [ でコピーモードに入る
- コピー開始したい位置に移動(hjklなどviキーバインド)
- vで選択開始(Vで行ごと選択開始)
- コピーしたい場合:yまたはEnterを押してコピー(Macのクリップボードにもコピーされてる🎉)
- 矩形選択との切り替えをしたい場合:Ctrl+vを押す
- 選択解除したい場合:Escを押す
- コピーモード自体を終了したい場合:qを押す
.tmux.confの設定
viキーバインドの設定
set-window-option -g mode-keys vi
tmuxの操作をviキーバインドでできるように。
今回に関係するところだと、コピーの選択範囲を指定するときに、hjklで移動したりやCtrl+vで矩形選択が使えるようになる。
選択開始キーの設定
bind -T copy-mode-vi v send-keys -X begin-selection
vimライクに「v」でコピーしたい範囲の選択を開始する
クリップボードへのコピー
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key
でコピーをするキーバインドを指定。Enterの他に、vimライクに、yでコピーする設定をする人が多いみたい。
send-keys -X copy-pipe-and-cancel "pbcopy
が、クリップボードへのコピーを行う設定
ネットで調べるとreattach-to-user-namespace pbcopy
を指定する的な内容が出てくることがあるが、tmux 2.6以降では不要なようです。参考:https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/66
※pbcopyはターミナルの出力をクリップボードにコピーしてくれるもの
矩形選択の切り替え設定
bind -T copy-mode-vi C-v send-keys -X rectangle-toggle
あくまで選択方法の切り替えを行うだけなので、コピーモードに入ってすぐ「Ctrl+v」を押してもvimのようにすぐ選択開始はされないので注意。(あくまで選択開始できるのは「v」)
Vで行ごと選択
bind -T copy-mode-vi V send-keys -X select-line
これは矩形選択と違って、Vで行ごと選択開始される。
Escで選択範囲を解除させる設定
bind -T copy-mode-vi Esc send-keys -X clear-selection
vimライクに、Escで選択範囲解除
参考