MacVimでクリップボードが使えないのはtmuxが原因でした
tmux から MacVim を立ち上げた時には、clipboard が使えません。
以前から clipboard が使える時と使えない時があって困っていた。
具体的には、
- アプリケーション起動した MacVim では使える
- ターミナルから起動した MacVim では使えない
- でもターミナルから起動した MacVim で使える時もある
クリップボードが使える環境と使えない環境の :set clipboard, :set guioptions, 最終的には :set の diff をしても原因が分からなかったので、 Vim 以外の設定を疑うことに。
今日やっと tmux 上から起動した時のみ発生していることに気付き、Mac の tmux でクリップボードを使う。 - こせきの技術日記 を見つけて解決。
tmux 上で pbcopy が使えない問題が MacVim にも影響していたようだ。
上述の
- でもターミナルから起動した MacVim で使える時もある
は、つまり
- tmux を立ち上げていないターミナルから起動した MacVim では使える
だったんですね。
まさか tmux から起動される MacVim(gVim)まで、pbcopy が使えない環境が引き継がれているとは...。
以下 tmux-MacOSX-pasteboard (reattach-to-user-namespace) を導入した解決方法
0. 事前準備
$HOME 下に bin が無い人は以下の手順が必要。
mkdir ~/bin vi ./.zshrc # .zshrcに以下を追加 PATH=$HOME/bin:$PATH
GitHub - ChrisJohnsen/tmux-MacOSX-pasteboard: Notes and workarounds for accessing the Mac OS X pasteboard in tmux sessions. Note: The pu branch (“Proposed Updates”) may be rewound without notice. の README.md にはそのまま ~/bin と書いてるけどデフォでは ~/bin が無いので念の為。
1. reattach-to-user-namespace を入れる
GitHub - ChrisJohnsen/tmux-MacOSX-pasteboard: Notes and workarounds for accessing the Mac OS X pasteboard in tmux sessions. Note: The pu branch (“Proposed Updates”) may be rewound without notice. から reattach-to-user-namespace を入れ、パスの通った場所にコピーする。
git clone git://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git
cd ./tmux-MacOSX-pasteboard
make reattach-to-user-namespace
cp reattach-to-user-namespace ~/bin
最近では homebrew からもインストールできたりする。
2. .tmux.conf に設定を追加する
set-option -g default-command "reattach-to-user-namespace -l zsh"
パスが通ってないと tmux が起動しなくなるので注意。