tmuxとMacVimでOS Xのクリップボードと連携


概要

MacVimでコピーした文字列が自動的にクリップボードに入るようにしたい(:set clipboard=unnamed) - 結城浩のはてな日記tmuxでOSXのクリップボードと連携 - Qiitaを見て、これは便利と両方設定したらtmux上のvimでコピーしてもクリップボードに入らないことに気づきました。

で、ググってみると
Sharipov Ruslan : tmux 1.8 + vim/MacVim: easy OSX clipboard integrationというページを見つけました。

alias vim="reattach-to-user-namespace vim"

とエイリアスを定義しておけば良いとのことです。

セットアップ

reattach-to-user-namespaceはhomebrewでインストールします。

$ brew install reattach-to-user-namespace

tmux.confの設定は以下のようにします。tmuxのプリフィクスをC-zに変更しています。

~/.tmux.conf
# Set prefix to C-z
unbind C-b
set-option -g prefix C-z
bind C-z send-prefix

# Use vim keybindings in copy mode
setw -g mode-keys vi

# Setup 'v' to begin selection as in Vim
bind-key -t vi-copy v begin-selection
bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"

# Update default binding of `Enter` to also use copy-pipe
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"

~/.vimrcには以下のように設定します。

~/.vimrc
set clipboard=unnamed,autoselect

~/.bashrcには以下のように設定します。

~/.bashrc
alias vim='reattach-to-user-namespace /Applications/MacVim.app/Contents/MacOS/Vim'

コピーの操作方法

  • tmuxでコピー
    • 範囲の選択開始: C-z [ Space
    • 範囲選択: hjkl0$など
    • コピー実行: Enter
  • vimでコピー
    • 範囲の選択開始: v
    • 範囲選択: hjkl0$など
    • コピー実行: y