vim可以默认使用系统剪贴板吗?


73

遇到几个问题,因为vim的选项卡没有更好的用词,真是太糟糕了。我想开始使用多个Gnome选项卡,每个选项卡具有不同的vim实例。一切都应该正常工作,但是,只能使用系统缓冲区+来共享文本。这使所有命令的两个按键击键时间更长:

y y 变成 " + y y

y w 变成 " + y w

d ' k 变成 " + d ' k

当人们认为像这样的简单拉取/粘贴操作时,尤其如此

y y p

变成

" + y y " + p

无论如何,要指示vim始终使用系统剪贴板吗?

编辑, 请参见此处,以获取有关在Gnome终端选项卡上使用多个vim实例的更多信息。


2
投票赞成关闭此程序的人,能否请您说明为什么您认为这不是一个好问题。
puk 2012年

你能解释为什么你不喜欢vim标签吗?另外,有些人不建议拥有多个vim实例:一个Vim ...仅一个
mMontu 2012年

@mMontu我不想每个缓冲区1个缓冲区,但是我仍然希望能够将缓冲区分组到不同的选项卡中。Vim不允许这样做。所有缓冲区都是全局的。我将讨论在这里stackoverflow.com/questions/8756459/...
PUK

1
@puk:为什么仅仅因为它们不适合您的特有工作流程而需要将Vim的标签称为“令人讨厌”或“无用”?它们显然很有用;大量的人使用和(喜欢使用)Vim​​的选项卡来简化编辑。话虽如此,编写一个插件来添加您在其他SO问题中描述的功能将是一个有趣的项目。例如,每个选项卡都可以具有一个t:buffers变量来保存每个选项卡的缓冲区列表,并且tabbuffers可以创建导航和其他操作,而仅对选项卡t:buffers列表中的缓冲区进行限制。
赫伯特·西兹

2
不,这是真的,Vim不仅仅适合现在的标准工作流程,而且一点都不费吹灰之力,而实际上对于那些在事情不再真正可怕之后学习编程的人来说,问题真是太糟糕了。
詹姆斯

Answers:


97

我在这里找到了解决我问题的方法。如果将以下内容添加到.vimrc文件中

set clipboard=unnamedplus

在vim中提取的所有内容都将进入未命名的寄存器,反之亦然。


3
我已经在您以前的问题之一中给了您这个答案。
romainl 2012年

我没有自觉地从你那里偷走它。我得到了灵感,可以从这里看到的类似解决方案中寻找该解决方案stackoverflow.com/a/1372546/654789
puk 2012年

14
或在Windows计算机上“设置剪贴板=未命名”。
zbstof 2012年

1
请注意,这不是一个完美的解决方案,如果您在vim之外复制一行,则与yanking不同yy,因此,如果粘贴它p,它将粘贴到位,而不是下一行p或上P一行
puk 2012年

11
相信您可以同时使用两者,例如:set clipboard=unnamed,unnamedplus。请注意,您必须使用+ X11,+ clipboard和+ xterm_clipboard构建VIM。我想在Windows上默认情况下是这样的。
亚历克斯(Alex)

5

顺便说一句,如果您只想使用终端的本机复制/粘贴处理,建议设置

:se mouse-=a

只需双击/右键单击终端即可。

就是说,我喜欢vim分割窗口,而且您可以使用鼠标拖动窗口分隔符/将光标置于位置(异端!)。这需要mouse + = a ...(并且还将在ssh / screen会话中工作!)。

我习惯做这样的事情:

:%retab|%>|%y+|u

并在召回时使用类似的命令。请注意,“ +寄存器是在命令行中编码的。要将最后的视觉选择复制到剪贴板,

:*y+

要么

:'<,`>y+ 

您能否再详细解释一下:se mouse-=a。我个人不是窗户的忠实拥护者,我更喜欢缓冲区。缓冲区> Windows >>> tabs
puk 2012年

@puk:我已经开始欣赏Windows的diffmode + quickfix。我开始欣赏多个差异集的标签(例如:tabedit a|vert diffsplit b)。我使用:set guioptions=agim switchbuf=usetab。要消除UI的僵硬和缓慢

做了很长时间的建议后,我强烈建议普克从上面回答:set clipboard=unnamed[plus]
Milimetric

@Millimetric我以自己的方式进行设置(我开始依赖单独的剪贴板,并且讨厌vim中的非标准设置-太多不同的系统)。但是:根据您的建议,我将为您推荐几个星期。干杯
sehe 2013年

2

可能的解决方法:

"Ctrl-c to copy in + buffer from visual mode
vmap <C-c> "+y

"Ctrl-p to paste from the + register in cmd mode
map <C-v> "+p

"Ctrl-p to paste from the + register while editing
imap <C-v> <esc><C-v>

2
我想过,但随后你需要一个新的快捷方式ywy{y}y%D...
PUK

1
我发现刚好够按钮的键盘rlv.zcache.com/...
PUK

1
如果要使用此解决方案,请分别考虑使用vnoremap,noremap和inoremap。
Kimball Robinson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.