私は普段VSCodeを使っていて、拡張機能としてvscode-nvimを使っていて、そしてこの拡張の設定でnvimはWSL上で実行するようにしている。 この設定にしてほとんど困ることはないのだが、唯一困るのがクリップボードが使えないことである。 理由は簡単でnvimがWSL上で実行されるために、クリップボード操作をしてもWindowsへ反映されないからである。
この問題をGoogle検索するとpowershell.exeを使ってクリップボードをコピーする方法が見つかる。 見つかった方法で解決はするのだが、WSLからexeを実行する関係でものすごく遅い。 これは厳しい…っとなってたが解決する方法を見つけたので備忘として残しておく。
解決策: WSLgを使う
解決方法は至ってシンプルでWSLgを使うことである。 どういうことかというのを簡単に説明すると、WSLgはWaylandというプロトコルを使っていてそのプロトコルを 経由してWindowsのクリップボードを操作できるという感じである。 具体的な手順を書くと
- Microsoft Store版のWSLをインストールしてWSLgを有効化する
- wl-clipboardをインストールする((Ubuntuの場合のパッケージ名)
- nvimの設定ファイルに以下を追記する
vim.opt["clipboard"] = "unnamedplus"
これでクリップボードがコピーできるようになるはず。
ちなみに、wl-clipboardに含まれるwl-copy/wl-pasteコマンドを使えばコマンドラインからクリップボードを操作することができる。
# クリップボードにコピー $ echo hoge | wl-copy # クリップボードからペースト $ wl-paste hoge