Zsh
tmux

【zsh】tmuxでキーボード操作でコピペする方法【コピーモード】

More than 1 year has passed since last update.

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で行選択もいけます。

そんな感じです。