繁体   English   中英

如何使用 Wayland 从 Vim 复制到系统剪贴板,而无需编译 vim `+clipboard` 功能标志

[英]How to copy from Vim to system clipboard using wayland and without compiled vim `+clipboard` feature flag

我无法复制到+*寄存器中。

:echo has('clipboard')来自 Vim 返回0表示我没有该功能标志,我不想重新编译。

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

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

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

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

上面的映射实现的是

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

    • @"参数表示
  3. @"内容作为系统的参数wl-copy function

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

或者

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

:'<,'>w !wl-copy

在哪里

  • '<,'> - 表示你使用了可视模式来 select 一个范围(你不输入这个)
  • w !{cmd} - 将范围写入cmd的标准输入,更多信息请参见:help w_c

您可以使用 map

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

作者要求的功能有望在 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>

暂时这对我来说效果更好:

if ($XDG_SESSION_TYPE ==# 'wayland' || ! empty($WAYLAND_DISPLAY)) && !has('nvim')
  autocmd TextYankPost * call system("wl-copy", get(v:event, 'regcontents'))
  nnoremap p :silent put =system('wl-paste')<CR>
endif

我希望,有人会善意地以适当的方式实现剪贴板支持。 如果是这样,它可能会在这个官方功能请求中讨论并提交

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM