pockestrap

Programmer's memo

vimでクリップボード連携を有効にした話

前提

+clipboardがついていない場合(vim --versionで確認できます)は、vimコンパイルしましょう。コンパイル楽しい!!

やったこと

ターミナル上のCUIVimでyankした時、それがクリップボードに入るようにした。

結論

~/.vimrcに次の2行を追加

set clipboard&
set clipboard^=unnamedplus

説明

unnamedplus

vimからclipboardを使うには、clipboardオプションにunnamedplusを含めます。
調べているとunnamedを加えると書いてあるものも多いですが、Linuxではunnamedだと中クリックでペーストされるものに、unnamedplusだとC-vなどでペーストされるものになります。
そのため、Linuxでyankした文字列をC-vなどで貼り付けたい場合、unnamedplusを加える必要があります。

set clipboard&

これの意味は、clipboardオプションの値をデフォルト値にセットする、という意味です(:help set-default)。

これがないと、vimrcをリロードした時に、無限にunnamedplusオプションが増えていってしまいます。

set clipboard^=unnamedplus

これでclipboardオプションにunnamedplusを追加しています。

ポイントは、^=です。ここに+=を使いたくなってしまいますが、それだと正しく動きません。

^=では値が前に、+=では値が後ろに入ります(:help :set^=, :help set+=)。 前に入れなければいけない理由は、clipboardのデフォルト値にあります。

clipboardオプションのデフォルト値はautoselect,exclude:cons\|linuxです(:help 'clipboard')。
この、excludeが曲者で、excludeの後ろは全てexcludeのためのパターンとして認識されます(:help clipboard-exclude)。

そのため、unnamedplus^=を使ってデフォルト値の前に追加する必要があります。

これに気が付かなくて、手元の環境ではクリップボードが使えないものかと思ってました…

まとめ

helpはちゃんと読もう