vim和系统剪贴板


9

我可以整理文件,使用中键或按住shift键复制和粘贴文本。

如何在vim中复制文本并将其从系统剪贴板粘贴?


有时我sed -n5,10p会打印5-10行,这样我就可以更轻松地进行复制和粘贴,而vim对鼠标没有反应。
Grantbow

实际上从vim内部看,命令看起来像是:!sed -n 5,10p %
Grantbow

感谢您的所有评论和答案。xclip有时很有用,谢谢@ sergiy-kolodyazhnyy。当我在不同的计算机上工作时,有时我无法控制安装哪个vim,但是感谢@ ashutosh-tripathy,帮助检查@muru答案的说明会有所帮助。我需要经常使用vim register命令来记住它们。正如我在上面的问题中提到的那样,如果我想快速执行此操作并且文件很小,则vim中的命令如下所示::!cat %
Grantbow

Answers:


12

你需要有Vim的与clipboardxtermclipboard功能编译。在Ubuntu中,这些只适用于VIM GUI包(vim-gnomevim-gtkvim-athena等)。

一旦安装了其中之一,就可以复制到剪贴板寄存器(*+)并从中粘贴。从有关Vi和Vim的非常有用的文章中:

对于基于X11的系统(即Linux和大多数其他类似UNIX的系统),有2个剪贴板,它们彼此独立:

  • PRIMARY-这是选定的副本,可以使用鼠标中键粘贴。
  • 剪贴板-使用(通常)复制^C并粘贴^V(类似于MS Windows)。

Vim有2个特殊的寄存器与这些剪贴板相对应:

  • *使用PRIMARY; 记忆:小号焦油是小号选择(复印-ON- 小号可选)
  • +使用CLIPBOARD;助记符:CTRL + C(用于公用键绑定)

要复制到寄存器,请在复制命令(y)之前加上"寄存器的名称(*例如)。"*y,然后单击鼠标中键进行粘贴,或者单击"+yShiftInsert进行粘贴。


3

一个非常有趣的解决方案来自这个问题。安装xclip,然后将命令的输出通过管道传递到xclip(cat file | xclip -selection clipboard例如),然后将其粘贴到任何地方(如果在终端中-使用Ctrl ShiftV )。现在,事实证明您实际上可以将该命令缩短为xclip -sel clip,从阅读手册页或此处的示例中并不能完全看出这一点。


2
另一种解决方法是使用screen或tmux以及此插件。无论如何,都需要安装一些东西。
muru

x服务器中实际使用的剪贴板是什么?我在中什么都没有找到/dev,但是文本仍然保留在某个地方,对吗?
Sergiy Kolodyazhnyy 2015年

我一直以为它会在内存中。不过,对于Unix和Linux来说,这似乎是一个不错的问题。
muru 2015年

3

我遇到了问题,因为我的vim不支持剪贴板

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

我安装了vim-gnome(支持剪贴板),然后再次检查:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

现在,我可以分别使用“ + y”和“ + p”进行复制和粘贴了。

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.