WSL2 上の Neovim とクリップボードを連携する設定
s-show
20 days前に投稿
0
Neovim: 0.10+
License: MIT
LUA
-- copy to clipboard vim.keymap.set('v', '<leader>y', '"+y') vim.keymap.set('n', '<leader>Y', '"+yg_') -- cut to clipboard vim.keymap.set('v', '<leader>d', '"+d') vim.keymap.set('n', '<leader>D', '"+dg_') local function paste() return { vim.fn.split(vim.fn.getreg(""), "\n"), vim.fn.getregtype(""), } end vim.g.clipboard = { name = "OSC 52", copy = { ["+"] = require("vim.ui.clipboard.osc52").copy("+"), ["*"] = require("vim.ui.clipboard.osc52").copy("*"), }, paste = { ['+'] = paste, ['*'] = paste }, }
WSL2 上の Neovim でもクリップボードを使う設定
OSC52 を使うことで、WSL2 上で動いている Neovim とクリップボードを連携させる設定です。この設定を入れると、<leader>y、<leader>Y、<leader>d、<leader>D で Neovim のバッファのテキストを OSC 52 経由でターミナル側のクリップボードに送れます。
ポイントは、Neovim 組み込みの vim.ui.clipboard.osc52 を使っていることです。追加プラグインを入れずに OSC 52 連携を実現できます。
一方、貼り付けについては、OSC 52 から直接取得するのではなく、Neovim 内部の無名レジスタを返す実装にしています。私は貼り付けは Shift-Insert を使って「ターミナルに文字列を挿入する処理」で実行しているのでこの設定は不要なのですが、paste も設定しないと copy の設定が有効にならないようですので1、一応設定しています。
そのため、この設定は主に Neovim のバッファのテキストを外部クリップボードにコピーするためのものです。
補足
この設定は、ターミナルアプリが OSC52 に対応していることが前提となっています。
コメントを投稿するにはログインが必要です