WSL2のneovimでclipboardを使う
ネットの情報と自分の環境で試した結果とで食い違いがあったので、メモしておく
set clipboard=unnamed,unnamedplusのみ
↑に加えて、clip.vimをvimrcに入れる
code:clip.vim
if system('uname -a | grep microsoft') != ''
let g:clipboard = {
\ 'name': 'WslClipboard',
\ 'copy': {
\ '+': 'clip.exe',
\ '*': 'clip.exe',
\ },
\ 'paste': {
\ '+': 'powershell.exe -c Console::Out.Write($(Get-Clipboard -Raw).tostring().replace("`r", ""))', \ '*': 'powershell.exe -c Console::Out.Write($(Get-Clipboard -Raw).tostring().replace("`r", ""))', \ },
\ 'cache_enabled': 0,
\ }
endif
if ... endif部分は下記のautocmd.vimのコードを流用した
結果
freezeすることなく起動した
copyもpasteも問題なく動く
paste処理が遅いのだけが難点
↑に加えて、autocmd.vimをvimrcに入れる
以下の記事で紹介されていたコード
code:autocmd.vim
if system('uname -a | grep microsoft') != ''
augroup myYank
autocmd!
autocmd TextYankPost * :call system('clip.exe', @")
augroup END
endif
結果
起動時に固まってしまう
copyは問題なし
pasteが効かない
他の方法
code:win32yank.vim
if system('uname -a | grep microsoft') != ''
let g:clipboard = {
\ 'name': 'myClipboard',
\ 'copy': {
\ '+': 'win32yank.exe -i',
\ '*': 'win32yank.exe -i',
\ },
\ 'paste': {
\ '+': 'win32yank.exe -o',
\ '*': 'win32yank.exe -o',
\ },
\ 'cache_enabled': 1,
\ }
endif
native windowsならこれでいける
WSLの場合はmanualでこれを入れてから設定する
code:install-win32yank.sh
if !(type "win32yank.exe" > /dev/null 2>&1); then
echo "win32yank.exe is not installed. Install win32yank.exe..."
unzip -p /tmp/win32yank.zip win32yank.exe > /tmp/win32yank.exe
chmod +x /tmp/win32yank.exe
sudo mv /tmp/win32yank.exe /usr/local/bin/
echo "Successfully installed win32yank.exe."
fi
結果
neovim内部でのみコピペする場合は問題なく動く
windowsのクリップボードと共有されない
neovim内部でコピーしたテキストがwindowsのクリップボードに貼り付けられていない
WSL2外部でコピーしたあとWSL2で貼り付けようとするとfreezeする
neovimに貼り付けた場合も同上
単独で実行しても、何故かfreezeする
これが関係している?
他にもcrash報告がたくさん上がっている
使わないほうが無難だな……