LoginSignup
5
3

WSL×NeoVim(init.lua) クリップボードにコピーできるようにする方法

Last updated at Posted at 2023-06-15

はじめに

この記事では、neovimでヤンクしたテキストをwindowsのクリップボードにコピーする方法及び、init.luaの設定を紹介します。
neovimを使い始めてまず当たった壁がこれだったのでお役に立てれば幸いです。

問題

windowsのWSL上でnvimを使用する際に%yなどでヤンクした行が、windowsのクリップボードに反映されない事象が起こった。

環境: windows11 WSL

手順

1. win32yankをインストール

環境に合わせてください。私はwin32yank-x64.zipをインストールしました。

image.png

2. ~/binを作成し、win32yank.exeを移動

win32.yank-x64.zipを解凍してください。その後、exeファイルを~/binに移動します。

wsl
mkdir ~/bin
mv ~/Downloads/win32yank.exe ~/bin
cd ~/bin
chmod +x win32yank.exe

3. PATHを通す

nvim ~/.bashrc

.bashrcの最後に以下を追記し、wslの再起動を行います。(普通にexitでOKです)

export PATH=$HOME/bin:/usr/local/bin:$PATH

4. PATHの確認

これで、先ほど追加したパスが出てくれば完了です。

echo $PATH

5. init.luaの設定

お待ちかねの、init.luaの設定です。
init.luaは~/.config/nvim/init.luaにあります。
まだ作っていない場合は以下で作成してください

mkdir ~/.config/nvim/
cd ~/.config/nvim
touch init.lua

以下のように記述します。
(2024/04/17追記)
コメントにもありますよう、ddでクリップボード共有をしたときに非常に遅くなる事象が発生しました。
以下の設定で問題なくできました。

init.lua
if vim.fn.has("wsl") == 1 then
    if vim.fn.executable("wl-copy") == 0 then
        print("wl-clipboard not found, clipboard integration won't work")
    else
        vim.g.clipboard = {
            name = "wl-clipboard (wsl)",
            copy = {
                ["+"] = 'wl-copy --foreground --type text/plain',
                ["*"] = 'wl-copy --foreground --primary --type text/plain',
            },
            paste = {
                ["+"] = (function()
                    return vim.fn.systemlist('wl-paste --no-newline|sed -e "s/\r$//"', {''}, 1) -- '1' keeps empty lines
                end),
                ["*"] = (function() 
                    return vim.fn.systemlist('wl-paste --primary --no-newline|sed -e "s/\r$//"', {''}, 1)
                end),
            },
            cache_enabled = true
        }
    end
end

補足

  • 私はwsl以外にVirtualBox上にUbuntu22.04を乗せて使ってます。
    vim.opt.clipboard = "unnamedplus"を追加しているので、Linuxのクリップボードでもコピーができました。

  • if vim.fn.has('wsl') == 1 thenと書くことで、wsl以外ではこの設定が読み込まれないようにしてあります。これを書かないとLinux環境でバグが発生しました。

参考

ほぼパクリ感がありますが、configがluaで書いてあるということで許してください。

参考
WSL2でtmux/vimのクリップボードをwinと共有する設定

5
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3