Vim
neovim
WSL

WSL上のvimでクリップボードを共有する方法

WSLでは既存の方法ではクリップボードをvimとシステムの間で共有させることができません。
どうやらWSLにはXserverが無くて、xselが使えないせいらしいです。
確かにターミナル上でもxselは使えませんでした。

解決方法

  1. ここからwin32yank.exeを落とす
  2. win32yank.exeのPATHを通す
  3. 以下をvimrcに追記
vimrc
nnoremap <silent>yy :.w !win32yank.exe -i<CR><CR>
vnoremap <silent>y :w !win32yank.exe -i<CR><CR>
nnoremap <silent>dd :.w !win32yank.exe -i<CR>dd
vnoremap <silent>d x:let pos = getpos(".")<CR>GpVG:w !win32yank.exe -i<CR>VGx:call setpos(".", pos)<CR>
nnoremap <silent>p :r !win32yank.exe -o<CR>
vnoremap <silent>p :r !win32yank.exe -o<CR>

vnoremap dの無理矢理感が凄いですけどね...(これより良い方法を知ってる方いらっしゃいましたら教えて頂けると有難いです)

追記

WindowsにXserverを導入してvimで使用する方法を教えて頂きました!(@EqualL2さんありがとうございます!)
成功したので、共有したいと思います!

  1. ここからVcXsrvをインストールする
  2. インストールが終わったらスタートメニューから「XLaunch」を実行(全てデフォルト値。クリップボードオプションにチェックが入っていることを確認してください)
  3. bashrcにexport DISPLAY=localhost:0.0を追記