不同于其他编辑器,vim会将复制的文本存储在自己的剪贴板中。因此,我很难从网页上复制一些文本并将其粘贴到当前工作的文件中。所以我要么得打开gedit,要么手动输入。
我能否让vim从系统剪贴板复制和粘贴呢?
我尝试了上面的建议,但在我的环境中都没有起作用。(通过ssh使用Windows PuTTY克隆)
其中一条评论建议使用SHIFT+INSERT
,这个方法成功地将桌面剪贴板中的内容粘贴到了Vim的缓冲区中。而Ctrl-C
已经可以从Vim复制到桌面剪贴板了。
SHIFT+INSERT
可以工作是因为它是您终端(或在您的情况下是 PuTTY)的粘贴选项;但是缩进可能会出现问题。请查看我答案中关于 paste
选项的最后一段来进行纠正。 - ConnerSHIFT+INS
从Linux主机到ssh vim同样有效,鼠标第三个点击也是如此。 - tuk0z这些组合键可以在任何操作系统上使用。
使用鼠标选择目标文本,然后参考以下键序列进行复制、剪切和粘贴。
ssh
在不同的Linux机器之间解决这个问题最简单的方法是:
检查vim是否支持X-11剪贴板:vim --version | grep clipboard
。如果报告-clipboard
和-xterm_clipboard
,则需要安装vim-gtk
或vim-gnome
(在Arch Linux上为gvim)。
将以下行添加到您的.vimrc
中:
set clipboard=unnamedplus
set paste
ssh -Y machine
现在,复制和粘贴应该像在单个机器上一样正常工作,在不同的机器上只需使用y
进行复制和p
进行粘贴。请注意,在您想要使用此功能的所有机器上修改.vimrc
。
复制到系统剪贴板:
"+y
从系统剪贴板中粘贴:
"+P
在光标之前粘贴 OR"+p
在光标之后粘贴。了解更多操作方式: 从其他程序/到其他程序复制和粘贴到 Vim!
在Linux或Mac上使用Vim 8+,您现在可以直接使用操作系统的本地粘贴功能(在Linux上为ctrl+shift+V
,在Mac上为cmd+V
),不需要按i
进入插入模式。
这将粘贴操作系统剪贴板的内容,保留空格和制表符而不会添加自动缩进。它相当于旧的:set paste
、i
、ctrl+shift+V
、esc
、:set nopaste
方法。
您甚至不需要安装+clipboard
或+xterm_clipboard
Vim特性。这个功能被称为“括号粘贴”。有关更多详情,请参见关闭vim中粘贴文本时的自动缩进
针对那些Vim安装不支持*
和+
寄存器的人们,这里有一个替代方法,不需要下载新的Vim安装程序即可粘贴文本到剪贴板中:
Install parcellite
(a clipboard manager with a low memory footprint);
In your .vimrc
file, add the following:
command Clip r !parcellite -c
Restart vim.
:Clip
作为ex
命令键入时,剪贴板的内容将粘贴到光标处。您还可以将新命令映射到功能键,以便能够通过一个按键完成此操作。 :set paste
右键单击鼠标
,缓冲区中的内容将被粘贴。我在一台2017年中期的Macbook Pro上使用iTerm2
作为主要开发环境,遇到了这个与vim
相关的问题。
正如其他答案所建议的那样,我运行了vim --version
命令,并注意到它返回了-clipboard
,这意味着我的机器所安装的vim
版本没有使用剪贴板选项进行编译。
homebrew
提供的vim
包似乎是使用clipboard
选项进行编译的,因此我的解决方法是:
brew install vim
set clipboard+=unnamed
添加到我的~/.vimrc
文件中iTerm2
自从vim 8版本开始,右键默认启用了可视模式。这会阻止“正常”的复制和粘贴(可以称之为“设计缺陷”,详见https://github.com/vim/vim/issues/1326)。通过以下方式修复:
echo "set mouse-=a" >> ~/.vimrc
。
退出并重新启动vim即可。
"最初的回答"
sudo apt-get install vim-gnome
,这将为内置的vim添加使用系统剪贴板的功能。 - Harnirvair Singhvim-gnome
可能过于复杂或在他们的操作系统/发行版中不可用,而我怀疑vim-gtk
和最好是vim-gtk3
更有可能存在并拉取更少的依赖项,同时仍提供剪贴板集成(至少对于那些仍在使用 X11 的人;我不确定这一切与 Wayland 如何交互)。 - underscore_d