我无法复制到+或*寄存器。Vim中的:echo has('clipboard')返回0,这意味着我没有那个特性标志,我不想重新编译。我正在运行wayland,因此无法使用X11 based solutions
+
*
:echo has('clipboard')
0
aelbi1ox1#
我很难找到资源,所以这里是通过添加~/.vimrc而最终工作的。
~/.vimrc
nnoremap <C-@> :call system("wl-copy", @")<CR>
wl-copy是一个Command-line copy/paste utilities for Wayland,它会将您给予它的管道内容复制到系统剪贴板。
wl-copy
上述Map实现的是
Ctrl + @
nnoremap <C-@>
"
@"
:call system("wl-copy", @")
假设你只想复制文件的行部分,执行shift + v进入可视模式,只突出显示我想复制的行。然后执行。
shift
v
:'<,'>w !wl-copy
其中
'<,'>
w !{cmd}
cmd
:help w_c
您可以使用
xnoremap <silent> <C-@> :w !wl-copy<CR><CR>
xnoremap
<silent>
<C-@>
:w !{cmd}
<CR><CR>
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>
2条答案
按热度按时间aelbi1ox1#
我很难找到资源,所以这里是通过添加
~/.vimrc
而最终工作的。wl-copy
是一个Command-line copy/paste utilities for Wayland,它会将您给予它的管道内容复制到系统剪贴板。上述Map实现的是
Ctrl + @
激活Map。或选择任何方便的组合键nnoremap <C-@>
"
寄存器的内容,@"
参数表示@"
的内容作为系统wl-copy
函数的参数进行管道传输:call system("wl-copy", @")
所示。或者
假设你只想复制文件的行部分,执行
shift
+v
进入可视模式,只突出显示我想复制的行。然后执行。其中
'<,'>
-表示您使用可视模式选择范围(不键入此内容)w !{cmd}
-将范围写入cmd
的标准输入,更多信息请参见:help w_c
您可以使用
xnoremap
:Map将仅在可视模式下工作<silent>
:不会在命令行上回显的Map<C-@>
:所需的组合键:w !{cmd}
:将范围写入cmd
的标准输入<CR><CR>
:需要两次输入,否则命令行等待另一个命令50pmv0ei2#
作者所要求的特性将有望在Vim中实现。有关详细信息,请参见:https://github.com/vim/vim/issues/5157
还有一个解决方法插件:https://github.com/jasonccox/vim-wayland-clipboard
至于我,我使用我自己的解决方案: