WSL上のvim/neovimのクリップボード設定方法です
注意: Windows Subsystem Linux for Previewにするとwin32yank.exeやclip.exeが使えなくなります
neovim
neovimはclipboradをカスタマイズできるので、コピー時・ペイスト時の入出力先をwin32yank.exeにしてあげればよい
let g: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