如何使用 Wayland 从 Vim 复制到系统剪贴板并且没有编译的 vim `+clipboard` 功能标志
Posted
技术标签:
【中文标题】如何使用 Wayland 从 Vim 复制到系统剪贴板并且没有编译的 vim `+clipboard` 功能标志【英文标题】:How to copy from Vim to system clipboard using wayland and without compiled vim `+clipboard` feature flag 【发布时间】:2020-08-06 07:28:50 【问题描述】:我无法复制到+
或*
寄存器。
:echo has('clipboard')
在 Vim 中返回 0
表示我没有那个功能标志,我不想重新编译。
我正在运行 Wayland,所以我不能使用 X11 based solutions
【问题讨论】:
可能相关插件:fauxClip 【参考方案1】:我在寻找资源时遇到了麻烦,所以最后通过添加 ~/.vimrc
来解决问题。
nnoremap <C-@> :call system("wl-copy", @")<CR>
wl-copy
是Command-line copy/paste utilities for Wayland,它会将您提供的管道内容复制到系统剪贴板。
上面的映射实现的是
-
使用
Ctrl + @
激活映射。或选择任何方便的组合键
nnoremap <C-@>
取"
寄存器的内容,
@"
参数表示
并将@"
的内容作为参数传递给系统wl-copy
函数
:call system("wl-copy", @")
显示。
Alternatively
假设您只想复制文件的行部分,请执行shift
+v
以进入可视模式并仅突出显示我要复制的行。那就去做吧。
:'<,'>w !wl-copy
在哪里
'<,'>
- 表示您使用可视模式选择了一个范围(您无需输入)
w !cmd
- 将范围写入cmd
的标准输入,更多信息请参见:help w_c
您可以使用
进行映射xnoremap <silent> <C-@> :w !wl-copy<CR><CR>
xnoremap
: 映射只能在可视模式下工作
<silent>
: 不会在命令行中回显的映射
<C-@>
:想要的组合键
:w !cmd
:将范围写入cmd
的标准输入
<CR><CR>
: 需要两次回车,否则命令行等待另一个命令
【讨论】:
【参考方案2】:作者要求的功能有望在 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>
【讨论】:
以上是关于如何使用 Wayland 从 Vim 复制到系统剪贴板并且没有编译的 vim `+clipboard` 功能标志的主要内容,如果未能解决你的问题,请参考以下文章