如何使用wayland从Vim复制到系统剪贴板,而不使用编译过的vim '+clipboard'特性标志

idfiyjo8  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(118)

我无法复制到+*寄存器。
Vim中的:echo has('clipboard')返回0,这意味着我没有那个特性标志,我不想重新编译。
我正在运行wayland,因此无法使用X11 based solutions

aelbi1ox

aelbi1ox1#

我很难找到资源,所以这里是通过添加~/.vimrc而最终工作的。

nnoremap <C-@> :call system("wl-copy", @")<CR>

wl-copy是一个Command-line copy/paste utilities for Wayland,它会将您给予它的管道内容复制到系统剪贴板。

上述Map实现的是

  • 使用Ctrl + @激活Map。或选择任何方便的组合键
  • nnoremap <C-@>
  • "寄存器的内容,
  • @"参数表示
  • 并将@"的内容作为系统wl-copy函数的参数进行管道传输
  • :call system("wl-copy", @")所示。
    或者

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

:'<,'>w !wl-copy

其中

  • '<,'>-表示您使用可视模式选择范围(不键入此内容)
  • w !{cmd}-将范围写入cmd的标准输入,更多信息请参见:help w_c

您可以使用

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

50pmv0ei2#

作者所要求的特性将有望在Vim中实现。有关详细信息,请参见:https://github.com/vim/vim/issues/5157
还有一个解决方法插件:https://github.com/jasonccox/vim-wayland-clipboard
至于我,我使用我自己的解决方案:

" Yank into all these at once:
"     vim y/p register
"     wayland primary
"     wayland clipboard
xnoremap <silent> <leader>y y:call system("wl-copy --trim-newline", @*)<cr>:call system("wl-copy -p --trim-newline", @*)<cr>

相关问题