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

puk*_*puk 69 vim

遇到几个问题,因为vim的标签是因为缺乏一个更好的术语,上帝可怕.我想开始使用多个Gnome选项卡,每个选项卡都有一个不同的vim实例.一切都应该工作正常,但是,只有系统缓冲区+可以用来共享文本.这使得所有命令的两个击键时间更长:

y y" + y y

y w" + y w

d ' k" + d ' k

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

y y p

" + y y " + p

反正有没有指示vim总是使用系统剪贴板?

编辑 在这里看到的更多信息,跨Gnome终端标签使用vim的多个实例

puk*_*puk 92

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

set clipboard=unnamedplus
Run Code Online (Sandbox Code Playgroud)

你在vim中猛拉的所有内容都将转到未命名的寄存器,反之亦然.

  • 或者在Windows机器上"设置clipboard = unnamed". (14认同)
  • 我相信你可以同时使用两者,例如:`set clipboard = unnamed,unnamedplus`.请注意,VIM必须使用+ X11,+剪贴板和+ xterm_clipboard构建.在Windows上,我想这是默认的. (11认同)
  • 我已经在你之前的一个问题中给了你这个答案. (3认同)
  • 请注意,这不是一个完美的解决方案,如果您在 vim 之外复制一行,它与拉动“yy”不同,因此如果您粘贴“p”,它将被粘贴到位,而不是粘贴在下一个“p”上或之前的“P”行 (3认同)
  • @puk你回应了我的观点。我已经习惯了只指定寄存器。有时我什至只是 `:let @+=@"` 或类似的 (2认同)

seh*_*ehe 5

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

:se mouse-=a
Run Code Online (Sandbox Code Playgroud)

只需像您在终端中习惯的那样双击/右键单击即可。

也就是说,我喜欢 vim 拆分窗口以及您可以使用鼠标拖动窗口分隔符/定位光标的事实(异端!)。这需要 mouse+=a... (并且也可以在 ssh/screen 会话上工作!)。

我习惯于做这样的事情:

:%retab|%>|%y+|u
Run Code Online (Sandbox Code Playgroud)

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

:*y+
Run Code Online (Sandbox Code Playgroud)

或者

:'<,`>y+ 
Run Code Online (Sandbox Code Playgroud)