WSL2のneovimでclipboardを使う
ネットの情報と自分の環境で試した結果とで食い違いがあったので、メモしておく
set clipboardの設定方法による違いは分からなかった
set clipboard=unnamed,unnamedplusのみ
起動後<C-c>を押さないとNeovimを操作できない
↑に加えて、clip.vimをvimrcに入れる
NeoVimのクリップボードとGNU screen/tmuxのクリップボードを共有するでvim-helpを引くことに思い至り、neovimのそれを引いたら載っていた設定をそのまま使った
WSL環境のときのみg:clipboardをカスタムする
copyにはclip.exeを、pasteにはGet-Clipboardを使う
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に入れる
以下の記事で紹介されていたコード
https://blog.logicky.com/2021/01/11/203719?utm_source=feed
code:autocmd.vim
if system('uname -a | grep microsoft') != ''
augroup myYank
autocmd!
autocmd TextYankPost * :call system('clip.exe', @")
augroup END
endif
結果
起動時に固まってしまう
copyは問題なし
pasteが効かない
他の方法
win32yank.exeを使う
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でこれを入れてから設定する
cf. https://github.com/neovim/neovim/wiki/FAQ#how-to-use-the-windows-clipboard-from-wsl
code:install-win32yank.sh
if !(type "win32yank.exe" > /dev/null 2>&1); then
echo "win32yank.exe is not installed. Install win32yank.exe..."
curl -sLo/tmp/win32yank.zip https://github.com/equalsraf/win32yank/releases/download/v0.0.4/win32yank-x64.zip
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する
これが関係している?
https://github.com/equalsraf/win32yank/issues/14
他にもcrash報告がたくさん上がっている
使わないほうが無難だな……
#2022-11-20 17:57:41