Copy to clipboard in tmux on Linux, Cygwin, Mac

Gnu
screen
からTmuxへターミナルマルチプレクサーの移行を進めている。移行に必要な作業はGnu
screen
でやっていたことの再現だ。
具体的には以下の内容を実現したい。
  1. tmux起動時にzshを起動
  2. クリップボードの共有化
  3. 画面サイズの変更のためのキーバインド設定
この内1は前回の記事で解決した。今回は2を解決した。。
tmuxにはコピーモードがあり,このモードで画面を選択してtmux上のクリップボードに内容をコピーして後で貼り付けることができる。しかし,これはOSのクリップボードとは独立している。コマンドやコマンドの実行結果などをコピーして貼り付けたりするために,tmuxでコピーした内容をOSのクリップボードへコピーするようにしてクリップボードを共有したい。
tmux
version 1.8
から導入されたcopy-pipeという機能を使えば,中間ファイルを介さずにできる。Gnu
screen
では中間ファイルを介して実装していたので,この点でもtmuxは進んでいるといえる。
参考:tmuxのバージョンを1.8にアップデートして、クリップボードの設定
– Qiita
http://qiita.com/kkabetani/items/e37ac1e4e0b53c418a35
tmuxでクリップボードの共有のために行う手順は以下の2点だ。
  1. コピーコマンドのインストール
  2. ~/.tmux.confへの設定
順を追って以下で説明する。

1 クリップボードへのコピーコマンドのインストール

tmuxのコピーモードでコピした内容をクリップボードに渡すにはOSごとに用意されているクリップボードの操作コマンドを利用する。
8.2:
OS
ごとにクリップボードへのコピーに使用するコマンド

$OSTYPE
コマンド
linux
xsel,
xclip
cygwin
putclip
mac
pbcopy

Macは環境がないので憶測である。
Linuxではクリップボードの操作コマンドにいくつかある。どれも対して変わらないと思う。今回はxselを使用する。LinuxCygwinでは標準ではコマンドがインストールされていないのでそれぞれ事前にインストールしておく。
Linux(Ubuntu)では以下のコマンドでインストールできる。
sudo
aptitude install xsel
Cygwinではsetup.exeからcygutils-extraを選択してインストールすることでputclipもインストールされる。

2 ~/.tmux.confの設定

以下のコードを~/.tmux.confに記入すれば各OSごとに機能する。コピーモードで範囲選択後,Enteryによりクリップボードにコピーされる。
##
copy to clipboard
###
for Linux
if-shell
“which xsel” ‘\
  bind-key
-t vi-copy y copy-pipe “xsel -ib”; \
  bind-key
-t vi-copy enter copy-pipe “xsel -ib”; \

###
for Cygwin
if-shell
“which putclip” ‘\
  bind-key
-t vi-copy y copy-pipe “iconv -s -t SJIS | putclip”; \
  bind-key
-t vi-copy enter copy-pipe “iconv -s -t SJIS | putclip”; \

###
for Mac (not checked)
  if-shell
“which pbcopy” ‘\
  bind-key
-t vi-copy y copy-pipe “pbcopy”; \
  bind-key
-t vi-copy enter copy-pipe “pbcopy”; \

2014-09-18追記:Cygwinで日本語をコピーするときは文字化けするのでionvで文字コードを変換してからputclipに渡すようにした。


簡単に内容を説明する。

  • if-shell
    “which xsel”
    でコマンドがあるか判定。あれば次の
    で囲んだ箇所を実行。
  • \で行を継続。
  • ;で連続実行(なお&&での連続実行は無理)
xsel-iで標準入力を受けつけ,-bでクリップボードにコピーしてくれる。LinuxではクリップボードにPRIMARYSECONDARY,
CLIPBOARD
3種類がある。PARIMARYはマウスで選択したらコピーされる領域で中ボタンのクリックで貼り付けられる。SECONDARYは普段は使わず一部のプログラムのみ使用する。。CLIPBOARDC-c,
C-x
や右クリックのコピー,切り取りなどでコピーされる領域。C-vや貼り付けにより貼り付けられる。
これらのクリップボード操作コマンドは何かと便利なので記憶にとどめておくとよい。
より詳細が知りたければ以下が参考になる。。

3 参考情報

この.tmux.confの設定に辿り着くまでに以下のようなサイトを参考にした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です