macのtmuxでコピー&ペースト

tmuxビギナーからするとコピペがデフォルトでできないってのがもどかしいです。
マウスで華麗にコピペとかしたい。
(option + マウスでコピペできるけど縦分割したペインがあると複数ペイン分コピーされて残念なことになります)


この辺りがさらっと(plugin install & 設定1行追加ぐらい)できれば
流行る気がするな〜。


やってみる

install reattach-to-user-namespace

tmuxでmacのpbcopy/pbpasteを使えるようにするreattach-to-user-namespace
をinstallします。

brew install reattach-to-user-namespace
tmux-pbcopyを作成

~/bin/tmux-pbcopy 実行権限付与

#!/bin/sh
if ! type pbcopy >/dev/null 2>&1 || ! type reattach-to-user-namespace >/dev/null 2>&1; then
  tmux display-message "Error: cannot copy to clipboard."
  exit 0
fi

COPY=`tmux save-buffer -`
echo "$COPY" | reattach-to-user-namespace pbcopy

# メッセージ表示
LINES=`echo "$COPY" | wc -l | tr -d ' '`
tmux display-message "Copy: $LINES lines"

tmux save-buffer - の結果をreattach-to-user-namespace pbcopyに食わしているだけです。
最初はコマンドの確認、最後はコピー行数を表示しているだけ。

tmux.confに以下を追加
# paste
## vi copy mode
## コピーモードをvi式spaceで開始、enterで終了するための設定です
set-window-option -g mode-keys vi

## use reattach-to-user-namespace for zsh
## reattach-to-user-namespaceをzshで使用するための設定です
set-option -g default-command "reattach-to-user-namespace -l zsh"

## binding
## コピーのbindingです。お好きにどうぞ。
bind y run-shell '~/bin/tmux-pbcopy'

補足

使い方

コピーモードでbufferに設定したあと、Ctrl-b y でコピー。

set -g mode-mouse on

していれば、マウスで選択した後、Ctrl-b yでコピーできます。

カスタマイズしたい

コピーモード終了した時点で、自動でコピーできないもんだろうか。