ぶていのログでぶログ

思い出したが吉日

WSLからWindowsへのクリップボードコピーを高速化する

私は普段VSCodeを使っていて、拡張機能としてvscode-nvimを使っていて、そしてこの拡張の設定でnvimはWSL上で実行するようにしている。 この設定にしてほとんど困ることはないのだが、唯一困るのがクリップボードが使えないことである。 理由は簡単でnvimがWSL上で実行されるために、クリップボード操作をしてもWindowsへ反映されないからである。

この問題をGoogle検索するとpowershell.exeを使ってクリップボードをコピーする方法が見つかる。 見つかった方法で解決はするのだが、WSLからexeを実行する関係でものすごく遅い。 これは厳しい…っとなってたが解決する方法を見つけたので備忘として残しておく。

解決策: WSLgを使う

解決方法は至ってシンプルでWSLgを使うことである。 どういうことかというのを簡単に説明すると、WSLgはWaylandというプロトコルを使っていてそのプロトコルを 経由してWindowsのクリップボードを操作できるという感じである。 具体的な手順を書くと

  1. Microsoft Store版のWSLをインストールしてWSLgを有効化する
  2. wl-clipboardをインストールする((Ubuntuの場合のパッケージ名)
  3. nvimの設定ファイルに以下を追記する
    • vim.opt["clipboard"] = "unnamedplus"
      

これでクリップボードがコピーできるようになるはず。

ちなみに、wl-clipboardに含まれるwl-copy/wl-pasteコマンドを使えばコマンドラインからクリップボードを操作することができる。

# クリップボードにコピー
$ echo hoge | wl-copy

# クリップボードからペースト
$ wl-paste
hoge