ようへいの日々精進XP

よかろうもん

tmux のコピーモードを使ってみる〜 Mac 編 〜

はじめに

ずっと逃げ続けてきた Mactmux を使っている時のコピーモードとクリップボードの連携についてやってみた。ちなみに Mac ではクリップボードをコマンドラインから利用する場合には pbcopypbpast を利用するとのことだが、tmux からは利用出来ないらしいが tmux-MacOSX-pasteboard をバイパスさせることで利用することが出来るらしい。


参考

記事の内容は参考にさせて頂いたこちらの焼き回しになっております。申し訳ございません。


メモ

reattach-to-user-namespace のインストール

reattach-to-user-namespace をインストールしなければいけないようだが、これは既に boxen を弄っているタイミングでインストールされていた。

  package {
    [
      'tmux',
      'reattach-to-user-namespace', # use tmux to clipbord
      'tree',
      'proctools', # kill by process name. like $ pkill firefox

ということで、動作確認がてら以下を ~/.tmux.conf に忍び込ませて確認する。この設定で zsh 上の tmux から pbcopypbpaste が利用出来るようになるとのこと。

set-option -g default-command "reattach-to-user-namespace -l zsh"

忍び込ませた後で新しいウィンドウを作成して...

date | pbcopy

としてクリップボードにコピーされていればオッケー。

f:id:inokara:20140102041919p:plain

確かにコピーされている!

キーバインドの設定

tmux のコピーバッファからクリップボードにペーストする為のキーバインドを以下のように設定する。Ctrl+qreattach-to-user-namespace tmux-pbcopy が実行されることになる。

bind C-q run-shell 'reattach-to-user-namespace tmux-pbcopy'

以下のようなシェルスクリプトtmux-pbcopy という名前で保存してパスが通った所に置く。

#!/bin/sh

tmux save-buffer /tmp/.tmux_to_pbcopy
cat /tmp/.tmux_to_pbcopy | pbcopy

# for message
tmux display-message "Copied."

以上。

使い方は以下のとおり。

  • Ctrl+b+[ でコピーモード
  • Space キーで選択
  • Ctrl+w+Enter でバッファにコピー
  • Ctrl+b+ qクリップボードにペースト

という感じで tmuxクリップボードを行き来することが出来るようになった。マジ、嬉しい。ちなみに、設定は boxenmanifest では以下のように書いた。

  $tmuxutil = "${home}/.tmux-pbcopy"
  $mybin    = "${home}/bin"
  file { $mybin:
    ensure  => directory
  }
  repository { $tmuxutil:
    source  => 'inokappa/tmux-pbcopy',
    require => File[$home]
  }
  file { "$mybin/tmux-pbcopy":
    ensure => link,
    target => "$tmuxutil/tmux-pbcopy",
    require => File[$mybin]
  }

最後に

  • 素晴らしい!
  • キー操作になれるのにちょい時間がかかりそうだけどかなり嬉しい!
  • 参考にさせて頂いた記事にマジ感謝!!!