.tmux.confをmacとlinuxで共有していて、「linuxではコピー&ペーストをクリップボードと連携できたのにmacではできない!」という悩みを解決した話です。

元の.tmux.confはこちら。

1
2
3
# sync clipboard
bind-key -t emacs-copy C-w copy-pipe "xclip -i -selection clipboard"
bind-key ] run "tmux set-buffer -- \"$(xclip -o -selection clipboard)\"; tmux paste-buffer"

上の行で、コピーモードでCtrl + wすると選択領域がカットできて、それをxclipというコマンドでクリップボードに流し込んでます。

下の行はその逆で、Ctrl + x (bind-key) の後 ] を続けて打つと、現在のクリップボードの中身を貼り付けてくれます。

SPONSERD LINK

今はmacの上にubuntuのVMを立てて、VMとホストのクリップボードを共有してるので、ホスト側でコピーしてVM内にペーストしたり、VM内でコピーした内容をホスト側にペーストしたりしてます。

ところがたまにmacのターミナルでtmuxをいじるときにこれができなくて非常に不便だったので色々ぐぐってたらできました。

そうしてできた.tmux.confはこちら。

1
2
3
4
5
6
7
8
# sync clipboard
# for linux
if "which xclip" "bind-key -t emacs-copy C-w copy-pipe 'xclip -i -selection clipboard'";
if "which xclip" "bind-key ] run 'tmux set-buffer -- \"$(xclip -o -selection clipboard)\"; tmux paste-buffer'";

#for mac
if "which pbcopy" "bind-key -t emacs-copy C-w copy-pipe 'pbcopy'"
if "which pbpaste" "bind-key ] run 'tmux set-buffer -- \"$(pbpaste)\"; tmux paste-buffer'"

macのターミナルのクリップボード連携はxclipではなくpbcopyとpbpasteというコマンドでやるらしいので、それぞれのコマンドがあるかどうかをifで判定してあったら設定かますという感じの内容です。

これでまた一つdotfilesが成長しました。.tmux.confの全体はこちらです。

参考記事

http://www.ideaxidea.com/archives/2011/04/macosx_terminal_tips.html
http://qiita.com/y_310/items/e8a495004bbc7a529c41