Skip to content

解决Neovim无法复制到系统剪切板

Published: at 06:24 AM

可以在Neovim中使用OSC 52来复制.在使用SSH或者使用WSL的情况下,方便地和系统剪切板交互.

注意:需要Neovim版本>=10.0,Neovim 在10.0增加了对于OSC 52的原生支持,Github PR

在 init.lua中粘贴如下配置文件:

--
function my_paste(reg)
  return function(lines)
    local content = vim.fn.getreg('"')
    return vim.split(content, "\n")
  end
end

vim.g.clipboard = {
  name = "OSC 52",
  copy = {
    ["+"] = require("vim.ui.clipboard.osc52").copy("+"),
    ["*"] = require("vim.ui.clipboard.osc52").copy("*"),
  },
  paste = {
    ["+"] = my_paste("+"),
    ["*"] = my_paste("*"),
  },
}

此时在可视化模式下选中即可复制到系统剪切板.因为windows terminal不支持OSC 52粘贴,所以如果需要从系统剪切板复制到neovim,需要使用(Ctrl + v).

有关OSC 52的介绍和不同Terminal对于OSC 52的支持可以参考这里: https://www.reddit.com/r/vim/comments/k1ydpn/a_guide_on_how_to_copy_text_from_anywhere/

参考资料: