如何在Vim中复制到剪贴板?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Vim中复制到剪贴板?相关的知识,希望对你有一定的参考价值。
是否可以直接从Vim复制到剪贴板? yy
只将东西复制到Vim的内部缓冲区。我想复制到操作系统的剪贴板。在Vim中有没有这样的命令,或者你只能在Vim中猛拉东西?
*
注册将执行此操作。在Windows中,+
和*
是等价的。在unix中,+
和*
之间存在细微差别:
在Windows下,*和+寄存器是等效的。但是,对于X11系统,它们有所不同。对于X11系统,*是选择,+是剪切缓冲区(如剪贴板)。 http://vim.wikia.com/wiki/Accessing_the_system_clipboard
*
可能是你大多数时候想要的,所以我使用*
,因为它在两种环境中都能像我期望的那样运行。
在Linux发行版中,出于某种原因,您必须首先安装vim-gtk才能获得剪贴板功能。
对于那些在yanking或put时如何使用寄存器感到困惑的人,你只需要写"
然后写入寄存器的名称。因此,要将某些内容复制到剪贴板寄存器,请键入"*y
,然后键入"*p
对于Ubuntu - 2018年7月
使用寄存器“+”复制到系统剪贴板(即“+ y而不是y”)。
同样,您可以粘贴“+”从系统剪贴板中获取文本(即“+ p而不是p”)。
您还必须确保编译vim并支持剪贴板。尝试:
vim --version | grep .xterm_clipboard -o
如果它是-xterm_clipboard(减去前缀),那么你没有支持。
以下是使用具有剪贴板支持的vim工作版本进行交换的一些说明。
- $ sudo apt-get purge vim
- $ sudo apt-get autoremove(从系统中删除任何无关的vim依赖包)
- $ sudo apt-get install vim-gnome
再次使用vim --version | grep .xterm_clipboard -o
检查,您可以确认剪贴板现在可用(即。+ xterm_clipboard)
祝好运。
如果你正在使用GVim,你也可以使用set guioptions+=a
。这将触发自动复制到您在可视模式下突出显示的文本的剪贴板。
缺点:请注意,在这种情况下,高级剪贴板管理器(具有历史记录)将获取所有选择历史记录...
如果您的vim恰好在没有+xterm_clipboard
选项的情况下编译,就像默认情况下在Debian中编译而我猜Ubuntu,您可以选择管道选择或整个缓冲区来处理桌面剪贴板的外部程序。对于xclip
(您可能需要先安装),命令将为:w !xclip -sel clip
你可以在这里找到答案Arch Wiki
对于Linux:首先,您必须通过安装gvim
在vim版本中启用剪贴板。
接下来,您必须将此行放在.vimrc
文件上。
set clipboard=unnamedplus
仅在ubuntu终端下的vim中,
按shift + drag mouse
选择vim中的文本,然后在终端上选择ctrl + shift + c
然后ctrl + v
在其他编辑
如果你有xclip,一种简单的方法将文本复制到剪贴板如下:
- 要复制的Yank文本。 (香草vim中的
y
命令) - 输入
:call system("xclip -selection clipboard", @")
:call system()
运行终端命令。它需要两个参数,第一个是命令,第二个是管道到该命令的内容。例如,:echom system("head -1", "Hello
World")
返回Hello(带有一些填充)。 echom返回命令的输出,调用不返回。
xclip -selection clipboard
只是将文本复制到系统剪贴板而不是默认的X剪贴板(中间的moue按钮访问)。
@"
返回最后一个被拉动的文本。 “是默认寄存器,但您可以使用任何寄存器。要查看所有寄存器的内容,请键入:registers
。
也许有人会发现它很有用。我想保持独立于X剪贴板,并且仍然能够在两个运行的vims之间复制和粘贴一些文本。这个小代码将所选文本保存在temp.txt文件中以进行复制。将下面的代码放入.vimrc中。使用CTRL-c CTRL-v完成工作。
vnoremap:w!cp / dev / null~ / temp.txt && cat>〜/ temp.txt
noremap:r!cat~ / temp.txt
- 把
set clipboard=unnamed
放在你的vimrc
。 - 在
Visual
模式中选择要复制的内容(按v进入)。 - 返回
Normal
模式(按escape [esc]),按y复制。 - 如果要从OS的剪贴板粘贴某些内容,请在Vim
Normal
模式下按p / P.
我是Vim newby但是,要将所有文本复制到系统剪贴板(例如,如果你想将它粘贴到文字处理器或其他文本编辑器,如gedit,mousepad等...),在正常模式下:
ggVGy
或者,更简单地说:
:%和
按照建议,我还安装了vim-gtk并放了
设置clipboard = unnamedplus
在我的.vimrc中
一切正常
如果只想复制部分文本,请使用可视模式(v),选择要复制的文本,然后按y。
最后,我建议剪贴板程序,如Clipman(我最喜欢的),Clipit,Parcellite或类似的。
(我在Debian Stretch Xfce中使用vim 8.0)
原谅我的英语! :-)
我在.vimrc中写了一个简单的行来进行复制工作。希望这有助于某人。不幸的是,我的vim没有安装剪贴板支持,所以这些建议都不适合我。基本上,将此行粘贴到.vimrc中:
map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>
如果您想阅读有关此功能的详细信息,可以在my blog上阅读此内容
在Mac OSX上
- 复制所选部分:直观地选择文本(在正常模式下键入
v
或V
)并键入:w !pbcopy
- 复制整个文件
:%w !pbcopy
- 粘贴从剪贴板
:r !pbpaste
在大多数Linux Distros上,您可以替换:
pbcopy
以上与xclip -i -sel c
或xsel -i -b
pbpaste
使用xclip -o -sel -c
或xsel -o -b
- 注意:如果您的发行版中没有预安装这些工具(xsel
和xclip
),您可以在回购中找到它们
对于某些国际键盘,您可能需要按“+空格来获得"
。
所以在这种情况下你必须按“Space + y或”Space * y
如果您不想为vim使用任何图形界面,并且您更喜欢坚持使用终端仿真器,那么可能会有一个更简单的方法来解决这个问题。不要使用yank或类似的东西,首先看一下你使用的终端文档。我一直在努力解决同样的问题(尝试使用+剪贴板和xclip等),最后我发现在我的终端模拟器中只需按shift并选择你要复制的任何文本就足够了。而已。非常简单,不需要搞乱配置。 (我顺便使用urxvt)。
如果您通过putty连接到unix系统,请按照以下步骤复制文件的内容
- 突出显示要复制的文本(您可以逐页复制)
- 按ctrl + c(它会将文本复制到剪贴板
- 粘贴在任何外部编辑器完成
对于OSX,就像上面提到的10342答案一样,你需要确保vim支持剪贴板功能,说OSX预先附带的那个不支持剪贴板,如果你运行brew install vim
它会工作。
除了运行vi仍然会让你运行preshipped OSX版本,而不是你从brew安装的版本。
为了克服这一点,我简单地将我的vim命令别名为brew版本,而不是OSX默认版本:
alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"
现在我是金色的
我有问题,因为我的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进行复制和粘贴。
在selecting
和mouse
的帮助下,right-click copy
在我的案件中工作。
我不想要包含行号,所以我在:set nonumber
之前copying
。
我的Windows笔记本电脑上面没有任何上述功能。
Ctrl + C可以复制..但我需要Shift + Insert来粘贴!
(一个很好的理由总是得到一台笔记本电脑,无需按下辅助键即可访问Insert)
如果您处于Linux的图形模式,请按Shift + Ctrl + C,但首先需要选择需要复制的内容。
在vimrc文件中,您可以指定自动使用系统剪贴板进行复制和粘贴。
在Windows上设置:
set clipboard=unnamed
在Linux上设置(vim 7.3.74+):
set clipboard=unnamedplus
注意:您可能需要使用最新版本的Vim才能使用这些版本。
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
使用寄存器"+
复制到系统剪贴板(即"+y
而不是y
)。
同样,您可以从"+
粘贴以从系统剪贴板获取文本(即"+p
而不是p
)。
@Jacob Dalton在评论中提到了这一点,但似乎没有人在答案中提到vim必须使用剪贴板支持编译,以便提供此处提到的任何建议。默认情况下我没有在Mac OS X上配置我的方式,我不得不重建vim。使用此命令来确定您是否拥有它vim --version | grep 'clipboard'
。 +clipboard
意味着你很好,这里的建议对你有用,而-clipboard
意味着你必须重新编译和重建vim。
总结并让新手更容易,
要复制当前行,请在命令模式下键入:
"*yy
要在命令模式下复制整个文件/缓冲区,首先通过gg
转到
以上是关于如何在Vim中复制到剪贴板?的主要内容,如果未能解决你的问题,请参考以下文章