WSL上のvim/neovimのクリップボード設定方法です
neovim
neovimはclipboradをカスタマイズできるので、コピー時・ペイスト時の入出力先をwin32yank.exeにしてあげればよい
letg:clipboard={ \'name':'myClipboard', \'copy':{ \'+':'win32yank.exe -i', \'*':'win32yank.exe -i', \}, \'paste':{ \'+':'win32yank.exe -o', \'*':'win32yank.exe -o', \}, \'cache_enabled':1, \}
vim
vimはclipboardカスタマイズできない。
- コピー時はTextYankPostをトリガーにしてwin32yankに書き込み、
- ペイスト時はwin32yankの内容を 一旦レジスタに書き込んだのちペイストするようにした。
:r !win32yank.exe -o
という設定をよく見かけるけれど、ペイスト後のカーソルの位置が気に食わないのでレジスタを仲介することにしました。
augroup Yank
au!" Yankにフックしてレジスタに登録された文字をwin32yankにも出力する autocmd TextYankPost * :call system('win32yank.exe -i', @")
augroup END
" win32yank内の文字を一旦vimのレジスタに登録してからペイストする
noremap <silent>p:call setreg('"',system('win32yank.exe -o'))<CR>""p