如何使用wayland从Vim复制到系统剪贴板而不使用编译的vim`+clipboard`功能标志

bro*_*ilo 5 vim clipboard vim-registers wayland

我无法复制到+*注册。

:echo has('clipboard')从 Vim 内部返回0意味着我没有那个功能标志,我不想重新编译。

我正在运行 wayland 所以我不能使用基于 X11 的解决方案

bro*_*ilo 5

我在寻找资源时遇到了麻烦,所以这是通过添加~/.vimrc.

nnoremap <C-@> :call system("wl-copy", @")<CR>
Run Code Online (Sandbox Code Playgroud)

wl-copyWayland命令行复制/粘贴实用程序,它会将您提供的管道内容复制到系统剪贴板。

上面的映射实现的是

  1. 使用 激活映射Ctrl + @。或选择任何方便的组合键
    • nnoremap <C-@>
  2. 获取"寄存器的内容,

    • @"参数表示
  3. 和管道内容@"作为系统wl-copy函数的参数

    • 由 显示:call system("wl-copy", @")

或者

假设您只想复制文件的行部分,请执行shift+v进入可视模式并仅突出显示我要复制的行。然后做。

:'<,'>w !wl-copy
Run Code Online (Sandbox Code Playgroud)

在哪里

  • '<,'> - 表示您使用视觉模式来选择一个范围(您不输入此内容)
  • w !{cmd}- 将范围写入 的标准输入cmd,查看更多信息:help w_c

你可以用

xnoremap <silent> <C-@> :w !wl-copy<CR><CR>
Run Code Online (Sandbox Code Playgroud)
  • xnoremap: 映射仅在可视模式下工作
  • <silent>: 不会在命令行回显的映射
  • <C-@>:所需的组合键
  • :w !{cmd}: 将范围写入标准输入 cmd
  • <CR><CR>: 需要两次输入,否则命令行等待另一个命令