tmux上のコピペをうまく設定する方法


.tmux.conf

tmux.conf
set-window-option -g mode-mouse on

と足すとマウスのスクロールが効くようになります

しかしこの設定をするとマウスで単純にクリップボードにコピペすることができなくなります

それに tmux 上でのコピーをクリップボードにできたらとても便利そうです

ということでこの辺を Mac と Ubuntu でできるだけ共通の設定でできないのか考えてみます

端末からクリップボードへのコピペする

この記事の設定が行われていることを前提とします

tmux 上でコピーを行ったものを標準出力へ出力するコマンドは

tmux save-buffer -

なのでこれを利用します

Ubuntu の場合

普通に

tmux save-buffer - | pbcopy

とすればできますが,少し長いので alias を用意します

alias tmux-copy='tmux save-buffer - | pbcopy'

とかしましょう

Mac の場合

Ubuntu と同じようにすればできそうですが,なぜか pbcopy がうまく動きません

それを回避する方法を紹介します

まず

brew install reattach-to-user-namespace

とします

それから

tmux save-buffer - | reattach-to-user-namespace pbcopy

とすればコピーできます

これも長いので alias を用意しましょう

alias tmux-copy='tmux save-buffer - | reattach-to-user-namespace pbcopy'

実際は .zshrc 内で if 文を書くなりして分けるべきです

私は .zshrc

[ -f $ZDOTDIR/.zshrc.`uname` ] && source $ZDOTDIR/.zshrc.`uname`

と書いてそれぞれ .zshrc.Linux, .zshrc.Darwin に上記の設定を書いています

便利!!

追記 (2013-07-08)

tmux で作業している時だけ zsh の設定を変えたいあなたに

に書いてあるようにすれば共通の設定で

alias tmux-copy='tmux save-buffer - | pbcopy'
zshrc.Darwin
if [ -n "$TMUX" ]; then
  alias pbcopy="reattach-to-user-namespace pbcopy"
fi

とやった方がいいと思います