我有一个映射到xclip的cntrl c和cntrl v,但是要记住使用它而不是常规的y和p是一件麻烦的事情。有没有办法给这两个文件加上别名,或者把y和p的内容发送到xclip,这样我就可以使用y和p进行所有的复制和粘贴了?
vmap <C-c> y:call system("xclip -i -selection clipboard", getreg("\""))<CR>:call system("xclip -i", getreg("\""))<CR>
nmap <C-v> :call setreg("\"",system("xclip -o -selection clipboard"))<CR>p")")")"))发布于 2011-07-14 15:42:28
您是否正在尝试使用X剪贴板进行所有复制和粘贴?如果是这样的话,一个好的替代方法是确保你使用的是带有X支持的vim (如果你的版本没有的话,编译Vim非常容易),然后将以下代码添加到你的vimrc中:
set clipboard=unnamed然后,所有yanks和deletes将自动转到*寄存器(即X选择寄存器)。
除了设置clipboard=unnamed,您还可以使用X选择寄存器进行单个操作,方法是使用(例如)
"*yw
"*yy
"*ya(或者别的什么。
显然,这并没有回答您关于如何使用xclip的问题,但希望它提供了另一种方法。
发布于 2021-11-20 16:03:05
我不知道这是不是一个理想的解决方案,但它是有效的。
set clipboard=unnamedplus
function! ClipboardYank()
call system('xclip -i -selection clipboard', @@)
endfunction
let vlcb = 0
let vlce = 0
function! ClipboardPaste(mode)
if (a:mode == "v")
call cursor(g:vlcb[0], g:vlcb[1]) | execute "normal! v" | call cursor(g:vlce[0], g:vlce[1])
endif
let @@ = system('xclip -o -selection clipboard')
endfunction
" replace currently selected text with default register without yanking it
vnoremap <silent>p "_dP
vnoremap <silent>y y:call ClipboardYank()<CR>
vnoremap <silent>d d:call ClipboardYank()<CR>
nnoremap <silent>dd dd:call ClipboardYank()<CR>
nnoremap <silent>p :call ClipboardPaste("n")<CR>p
vnoremap p :<C-U>let vlcb = getpos("'<")[1:2] \| let vlce = getpos("'>")[1:2] \| call ClipboardPaste("v")<CR>p发布于 2014-02-15 02:36:05
你也可以通过set clipboard=unnamedplus默认使用“+”寄存器。使用它,我在我的.vimrc中做了yy,然后用ctrl-V将该行粘贴到这里;)
https://stackoverflow.com/questions/6687317
复制相似问题