ゆず日記

戦う Vimmer 兼 Dvorakユーザ 兼 Kinesisユーザ 兼 おぺらー が戦わないブログ

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 が起動しなくなるので注意。

3. 終わり。

こんにちは gVim。今日から貴方がメインエディタです。



それでも上手く行かない!!という為に gVimVim の関連設定をメモっとくので参考にどぞ。
現在の設定は、:set clipboard コマンドなどで確認できます。

gVim

set clipboard+=autoselect
set guioptions+=a
set guioptions-=T   " メニューなんぞ要らない

Vim

set clipboard+=autoselect