与其他编辑器不同,vim将复制的文本存储在自己的剪贴板中。所以,对我来说,从网页复制一些文本并将其粘贴到当前的工作文件中是非常困难的。碰巧我必须打开gedit或手动输入它。

我可以使vim粘贴从和系统的剪贴板?


当前回答

Linux

在我的Linux系统上,+和*寄存器映射到一个X11选择项,可以用鼠标中间按钮粘贴。当使用:set clipboard= named和:set clipboard=unnamedplus时,寄存器映射到剪贴板,可以用CTRL-V粘贴。

具体细节似乎取决于配置和系统,所以您的里程肯定会有所不同。不过,它肯定会给你指明正确的方向。

另请参阅

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

其他回答

我使用了NM Pennypacker的答案,并通过自制程序为2011年初的MacBook Pro安装了vim:

brew install vim

现在我还可以使用“*寄存器”在vim中复制和粘贴文本。我甚至不需要在~/中更改任何内容。vimrc文件或$PATH。Homebrew在/usr/local/bin中增加了符号链接,例如vim -> ../Cellar/vim/8.1.2350/bin/vim。

之前工作的替代方法是在vim中通过用鼠标标记并在mac上使用复制和粘贴(cmd + c, cmd + v)来复制一些文本行。此选项仅在您想要复制和粘贴的文本小于vim的窗口大小时有效。如果你想通过标记整个窗口或使用cmd + a复制vim中的所有文本,这将复制启动vim之前编写的控制台的其他部分,这非常烦人。

所以,我很高兴找到了使用剪贴板寄存器的新方法。

剪贴板

有一个特殊的寄存器用于存储这些选择,它是“*” 登记。这里什么都没有,除非是关于文本是什么的信息 所选项即将更改(例如,用鼠标左键单击某处),或当更改时 另一个应用程序想要粘贴所选文本。然后将文本放入 在*寄存器中。例如,切断一条线并使其成为电流 选择/把它放在剪贴板上:

    "*dd

类似地,当您想要粘贴来自另一个应用程序的选择时,例如, 通过单击鼠标中间按钮,所选内容被放入“*寄存器” 首先,然后像其他寄存器一样“放”。例如,把 选择(剪贴板的内容):

    "*p

寄存器E354

> There are nine types of registers:                      
> 1. The unnamed register ""
> 2. 10 numbered registers "0 to "9
> 3. The small delete register "-
> 4. 26 named registers "a to "z or "A to "Z
> 5. four read-only registers ":, "., "% and "#
> 6. the expression register "=
> 7. The selection and drop registers "*, "+ and "~ 
> 8. The black hole register "_
> 9. Last search pattern register "/

从剪贴板粘贴

1. Clipboard: Copy
2. Vim insertmode, middle mouse key

检查终端是否支持x11剪贴板

当你想在终端上运行Vim时,你需要寻找一个带有剪贴板支持的Vim版本。 检查x11剪贴板支持,从控制台,键入:

% vim --version

如果看到“+xterm_clipboard”,就可以开始了。

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

X服务器维护三个选择,称为: 主要,次要和剪贴板 PRIMARY选择通常用于实现复制和 通过鼠标中间按钮粘贴。次要和剪贴板 应用程序较少使用选择。

http://linux.die.net/man/1/xsel

有两种简单的方法。使您的文件处于插入模式和 1)按下鼠标中间的按钮(滚轮),或者 2) Ctrl + Shift + V

最简单的解决方案,也可以通过ssh在不同的Linux机器之间工作:

查看vim是否支持X-11 clipboard: vim——version | grep clipboard。如果它报告回-clipboard和-xterm_clipboard,你应该安装vim-gtk或vim-gnome(在arch linux上的gvim) 在你的.vimrc中添加以下代码行:

设置剪贴板= unnamedplus 设置粘贴

如果您通过ssh在另一台机器上登录,请使用选项-Y: ssh -Y machine

现在,复制和粘贴在一台机器上和在不同的机器上都可以正常工作,只需要用y表示yank,用p表示粘贴。注意:在想要使用该特性的所有机器上修改.vimrc。

我尝试了上面的建议,但没有一个在我的环境中起作用。(Windows PuTTY通过ssh克隆)

你还可以在谷歌上搜索到: https://unix.stackexchange.com/questions/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard

其中一条评论建议使用SHIFT+INSERT,它可以从我的桌面剪贴板粘贴到Vim的缓冲区中。Ctrl-C已经开始从Vim复制到桌面的剪贴板。