首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vim: alias yank并复制到xclip

vim: alias yank并复制到xclip
EN

Stack Overflow用户
提问于 2011-07-14 08:48:42
回答 3查看 2K关注 0票数 3

我有一个映射到xclip的cntrl ccntrl v,但是要记住使用它而不是常规的yp是一件麻烦的事情。有没有办法给这两个文件加上别名,或者把yp的内容发送到xclip,这样我就可以使用yp进行所有的复制和粘贴了?

代码语言:javascript
复制
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")")")"))
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-14 15:42:28

您是否正在尝试使用X剪贴板进行所有复制和粘贴?如果是这样的话,一个好的替代方法是确保你使用的是带有X支持的vim (如果你的版本没有的话,编译Vim非常容易),然后将以下代码添加到你的vimrc中:

代码语言:javascript
复制
set clipboard=unnamed

然后,所有yanks和deletes将自动转到*寄存器(即X选择寄存器)。

除了设置clipboard=unnamed,您还可以使用X选择寄存器进行单个操作,方法是使用(例如)

代码语言:javascript
复制
"*yw
"*yy
"*ya(

或者别的什么。

显然,这并没有回答您关于如何使用xclip的问题,但希望它提供了另一种方法。

票数 4
EN

Stack Overflow用户

发布于 2021-11-20 16:03:05

我不知道这是不是一个理想的解决方案,但它是有效的。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2014-02-15 02:36:05

你也可以通过set clipboard=unnamedplus默认使用“+”寄存器。使用它,我在我的.vimrc中做了yy,然后用ctrl-V将该行粘贴到这里;)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6687317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档