## やり方1
> [!info]
> #2024/03/12 時点ではこちらの方式を採用。
[[xsel]]を使う。インストールしたら、[[init.lua]]に以下を追加する。
```lua
vim.g.clipboard = {
name = 'WslClipboard',
copy = {
['+'] = 'xsel -bi',
['*'] = 'xsel -bi',
},
paste = {
['+'] = 'xsel -bo',
['*'] = function() return vim.fn.systemlist('xsel -bo | tr -d "\r"') end,
},
cache_enabled = 1,
}
```
1つ注意点として、[[Windows]]でクリップボードにコピーし、[[WSL2]]でputすると、[[CRLF改行]]のゴミ `<CR>` が残ってしまう。これを防ぐため、putするときに `"*p` とコマンドを実行し、`\r`を削除するように設定してある。
> [!question] `['+']`のレジスタに登録しないのはなぜ?
>
> 利便性を考えると`['+']`の[[レジスタ (Vim)|レジスタ]]に上記処理を登録した方が楽と思えるかもしれない... が、わずか(数十msくらい)の処理遅延を感じるため、必要がないときは快適に操作できるよう使わないようにしている。
> [!question] [[win32yank]]を使わないのはなぜ?
> [[win32yank]]だけでも実現はできる...が、[[win32yank]]がexeファイルのせいか実行時にラグが生じる。ラグは環境によるが、場合によっては10秒以上フリーズするケースもあり、それでは使えない。
## やり方2
> [!caution]
> 環境によっては`wl-copy`や`wl-paste`にラグがあり、特に`wl-copy`のラグはそのあとのputに直接影響を及ぼす(意図した[[ヤンク]]がputされない)ので要注意。
[[wl-clipboard]]を使う。インストールしたら、[[init.lua]]に以下を追加する。
```lua
vim.opt.clipboard = "unnamedplus"
vim.g.clipboard = {
name = "WslClipboard",
copy = {
["+"] = "wl-copy",
},
paste = {
["+"] = function()
return vim.fn.systemlist('wl-paste | tr -d "\r"')
end,
["*"] = "wl-paste",
},
cache_enabled = 1,
}
```
[[Windows]]のホストからコピーした`<CR>`は基本的にノイズとなるため自動で除去している。必要な場合は`"*p`としてやればよい。