🐕

Neovim on WSL2で、win32yankを導入してクリップボードの共有と遅延問題を解決

2022/12/06に公開

問題

https://zenn.dev/shoseisan/articles/376449fd9e46c1
この記事でWSL2上のNeovimとWindowsとのクリップボードの共有に成功したが、xキー長押しによる文字の削除(一応切り取りなのでclip.exeの呼び出しが起きていた)でやたら遅延が発生するので気になっていた。
遅延に関してほかの記事でも語られていたので、win32yankを導入して遅延を解消した備忘録としてここに書き記す。

win32yankのダウンロードと設定

https://github.com/equalsraf/win32yank/releases
ここからwin32-x64.zipをダウンロードして解凍する。

Ubuntuのホームディレクトリ(私の環境だと/home/shoseisan)mkdir binでbinディレクトリを作り、そこにダウンロードしたwin32yank.exeを移動する。
この際、以下のコマンドでカレントディレクトリでexplorerを開くことが出来る。

$ explorer.exe .

その後、デフォルトだと実行権限が無いので以下のコマンドを打ち込んで実行権限を付与する。

$ cd ~/bin
~/bin$ chmod +x win32yank.exe 

PATHの設定

次に、homeディレクトリにbinというディレクトリを作ったのでこのをPATHを通す。
自分の環境に合わせて以下を書き加える。

fish

~/.config/fish/config.fish
(略)
set -x PATH $HOME/bin /usr/local/bin $PATH

bash

~/.bashrc
export PATH=$HOME/bin:/usr/local/bin:$PATH

これでホームディレクトリ直下のbinディレクトリのPATHが通った。
設定を反映させるためにターミナルを再起動しよう。

動作テスト

$ echo "Hello" | win32yank.exe -i

上記のコマンドを打ち込んでwindows側のメモ帳等に"Hello"と貼り付けが出来れば成功である。

init.vimの設定

現段階ではneovim側でwin32yankの機能を使えないので、init.vimに以下を書き加えて使えるようにする。

~/.config/nvim/init.vim
set clipboard=unnamed

let g:clipboard = {
        \   'name': 'myClipboard',
        \   'copy': {
        \      '+': 'win32yank.exe -i',
        \      '*': 'win32yank.exe -i',
        \    },
        \   'paste': {
        \      '+': 'win32yank.exe -o',
        \      '*': 'win32yank.exe -o',
        \   },
        \   'cache_enabled': 1,
        \ }

これでvim上で:%yなどでヤンクしたテキストをwindows上のメモ帳にペーストしたり、逆の操作もできるようになるはず。
また、問題で上げたxキーによる削除時の遅延問題も大分解決された。

参考文献

https://scrapbox.io/takker/WSL2のneovimでclipboardを使う
https://zenn.dev/kujirahand/articles/4b37160f781be7

Discussion