概要
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
- 範囲選択:
hjkl
や0
や$
など - コピー実行:
Enter
- 範囲の選択開始:
- vimでコピー
- 範囲の選択開始:
v
- 範囲選択:
hjkl
や0
や$
など - コピー実行:
y
- 範囲の選択開始: