vimでクリップボード連携を有効にした話
前提
+clipboard
がついていない場合(vim --version
で確認できます)は、vimをコンパイルしましょう。コンパイル楽しい!!
やったこと
ターミナル上のCUIのVimで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はちゃんと読もう