itermやターミナルで複数窓を開いてて、隣の窓のとある部分をコピーしてこっちに貼り付けたい。
ということは結構あります。
しかしその度マウスやトラックパッドまで手を伸ばしてコピーするのは少々煩わしいです。
そう思っていたらtmuxにはコピーモードというものがあることを知ったので早速使ってみたのです。
環境
- Mac
- iterm
- zsh
- tmux (version2.5)
と、書きましたが要はtmuxさえ動く環境であればなんでもいいはずです。
ただ、brewでとあるものをインストールしているのでこの手順はmac前提です。なにをいっているんでしょうかね僕は。
手順
brew install reattach-to-user-namespace
でreattach-to-user-namespaceをインストールします。
これはtmuxのコピーモードでコピーした内容をmacのクリップボードに移すために必要なパッケージです。
次に~/.tmux.confを作成し以下を記述します。
set-option -g default-command "exec reattach-to-user-namespace -l $SHELL"
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
※tmux2.4以前では、vi-copyだったのですが、以降はcopy-modeという項目に変わっているので注意。
古い記事にはvi-copyと書かれていることが多いのでここでハマってしまわないように。まあ僕ですが。
上記のconfを作成したら、tmuxを再起動させます。
tmux source ~/.tmux.conf
上記コマンドで反映されます。(tmuxから抜ける必要はありません)
これで、
control + b 押してから、 [
を押すとコピーモードに移り、
v or space でコピー開始
カーソルを動かして範囲を選択
y or enter でクリップボードに保存
ができます。
地味にコピーモード中に、
control + v
で矩形選択できるものもうれしいです。
もちろんshift + vで行選択もいけます。
そんな感じです。
※ちなみに僕はこれに加えて、BetterTouchToolsを使って、
【controlキーを素早く2回押す】の動作を【control + b】に割り当ているため、
【controlキーを素早く2回押す】→【[】
でコピーモードに移れるようにしています。