是否可以直接从Vim复制到剪贴板?yy只把东西复制到Vim的内部缓冲区。我想复制到操作系统的剪贴板。在Vim中有这样的命令吗?或者你只能在Vim中提取东西?


使用寄存器“+”复制到系统剪贴板(即。+y而不是y)。

同样,您可以从“+”粘贴从系统剪贴板(即。"+p而不是p)。


*寄存器将执行此操作。在Windows中,+和*是等价的。在unix中,+和*之间有细微的区别:

在Windows下,*和+寄存器 是等价的。对于X11系统, 不过,它们有所不同。对于X11系统, *是选区,+是剪切缓冲区(如剪贴板)。 http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*可能是您大多数时候想要的,所以我使用*,因为它在两种环境中都能正常工作。

在Linux发行版中,你必须先安装vim-gtk(又名gvim)才能获得剪贴板功能。这是因为非gtk vim通常在编译时没有X11支持。这是为了允许它只在控制台机器(通常是服务器)上运行。

对于那些在拉取或放入时如何使用寄存器感到困惑的人,你只需写上“然后是寄存器的名称”。因此,要将内容复制到剪贴板寄存器,您只需输入“*y”,然后输入“*p”(来源:Kyle Mathews)


如果你正在使用GVim,你也可以设置guioptions+=a。这将触发自动复制到剪贴板的文本,您在视觉模式突出显示。 缺点:注意,高级剪贴板管理器(历史)将在这种情况下得到你所有的选择历史…


我不能复制到剪贴板的系统中,因为我的~/中有这个。vimrc文件:

 if has('mouse')
   set mouse=a
 endif

但如果你接下来添加这一行,它将允许你简单地按Ctrl+c将你所选择的任何东西放入剪贴板。

vmap <C-c> "+y

原始讨论和更多详细信息:启用set mouse=a从vim中复制文本


在vimrc文件中,可以指定自动使用系统剪贴板进行复制和粘贴。

macOS和Windows设置:

set clipboard=unnamed

Linux set (vim 7.3.74+):

set clipboard=unnamedplus

注意:您可能需要使用最新版本的Vim才能工作。

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


在Mac OSX上

复制所选部分:可视选择文本(正常输入v或v) 模式)和类型:w !pbcopy 复制整个文件:%w !pbcopy 从剪贴板粘贴:r !pbpaste

在大多数Linux发行版上,你可以替换:

用xclip -i -sel c或xsel -i -b拷贝上面的内容 使用xclip -o -sel -c或xsel -o -b进行Pbpaste 注意:如果这些工具(xsel和xclip)都没有预先安装在你的发行版上,你可以在回购中找到它们


@Jacob Dalton has mentioned this in a comment, but nobody seems to have mentioned in an answer that vim has to be compiled with clipboard support for any of the suggestions mentioned here to work. Mine wasn't configured that way on Mac OS X by default and I had to rebuild vim. Use this the command to find out whether you have it or not vim --version | grep 'clipboard'. +clipboard means you're good and the suggestions here will work for you, while -clipboard means you have to recompile and rebuild vim.


我在我的.vimrc中写了一个简单的行来让复制工作。希望这能帮助到一些人。不幸的是,我的vim没有安装剪贴板支持,所以这些建议对我都不起作用。基本上,将这一行粘贴到你的.vimrc中:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

如果你想了解详细信息,你可以在我的博客上阅读


总结一下,让新手更容易上手,

复制当前行,在命令模式输入:

"*yy

要复制整个文件/缓冲区,在命令模式下,首先通过gg转到开头,然后键入

"*yG

如上所述,这需要vim——version中的+clipboard,这表示支持剪贴板,-clipboard表示不支持。


如果你的vim编译时没有+xterm_clipboard选项,就像Debian和Ubuntu中默认的那样,你可以将选择或整个缓冲区输送到处理桌面剪贴板的外部程序。对于xclip(您可能需要在前面安装它),命令将是:w !xclip -sel clip


我的解决方案是安装额外的vim,包括剪贴板选项:

sudo apt-get install vim-gnome

也许有人会觉得有用。我想要独立于X剪贴板,并且仍然能够在两个运行的vims之间复制和粘贴一些文本。这段小代码将所选文本保存在temp.txt文件中以供复制。将下面的代码放入您的.vimrc中。使用CTRL-c CTRL-v来完成这项工作。

cp /dev/null ~/temp.txt && cat > ~/temp.txt

Noremap:r !cat ~/temp.txt


对于一些国际键盘,您可能需要按“+空格获得a”。

所以在这种情况下,你必须按“空格+y”或“空格*y”


把设置剪贴板=未命名在你的vimrc。 选择你想要复制在视觉模式(按v进入)。 返回正常模式(按escape[esc]),按y复制。 如果你想从操作系统的剪贴板中粘贴一些东西,在Vim Normal模式下按p/ p。


In case you don't want to use any graphical interface for vim and you prefer to just stick with terminal emulator there may be a much simpler approach to this problem. Instead of using yank or anything like this, first take a look at documentation of terminal you use. I've been struggling with the same issue (trying to use +clipboard and xclip and so on) and in the end it turned out that in my terminal emulator it's enough to just press shift and select any text you want to copy. That's it. Quite simple and no need for messing with configuration. (I use urxvt by the way).


如果您通过putty连接到Unix系统,那么按照以下步骤复制文件的内容

突出显示要复制的文本(您将能够逐页复制) 按ctrl+c(它将复制文本到剪贴板 粘贴任何外部编辑器 完成


如果您在旧版本的macOS中使用vim,不幸的是,附带版本的vim可能会使用剪贴板选项进行编译。幸运的是,自制程序可以很容易地解决这个问题。

安装vim: 安装vim 安装vim的gui版本: 酿造安装macvim 重启终端生效。 将下面的行追加到~/.vimrc 设置剪贴板=不知名的 现在,您可以用yy在vim中复制该行,并在系统范围内粘贴它。

更新方法:

多年来,我一直不满意固定剪贴板的方法。最大的缺点是它会搞乱你的剪贴板历史,即使当你使用x删除。这里有一个更好、更优雅的解决方案。

将vim的文本[range]复制到系统剪贴板中。(提示:先用v或v选择范围,然后输入冒号:激活Ex命令): (行范围):猛拉+ 例如,复制/删除第5-10行到系统剪贴板*寄存器使用: y: 5、10 * 将系统剪贴板中的内容新一行粘贴到vim中: :把+

注意:

如果您选择了一个单词范围,上述操作将不起作用。使用“*y”或“+y”将该可视化块保存到剪贴板。然而,这很难打字,我仍在考虑替代方案。 :help "*或:help *+获取更多信息 酿造信息vim将能够看到其他选项安装vim。目前它没有任何其他选择。


仅在ubuntu终端下的vim中,

在vim中按shift +鼠标拖动选择文本,然后在终端上按CTRL + shift + c

然后在其他编辑器上按CTRL + v


在我的情况下,使用鼠标和右键复制的帮助进行选择。

我不希望包括行号,所以我:在复制之前设置nonnumber。


以上这些在我的windows笔记本电脑上都不起作用。

Ctrl+C可以用于复制。但我需要 Shift+插入到粘贴!

(一个很好的理由,总是有一个笔记本电脑,可以随时插入,而不需要按第二个键)


你可以在这里找到答案 拱维基

Linux: 首先,你必须通过安装在你的vim版本中启用剪贴板 gvim。


接下来,您必须将这一行放到.vimrc文件中。

设置剪贴板= unnamedplus


对于OSX,就像上面的10342个答案所表明的那样,你需要确保vim支持剪贴板功能,并且OSX预发布的那个不支持剪贴板,如果你运行 酿造安装vim它将工作。

除了运行vi仍然会让你运行预先发布的OSX版本,而不是你从brew安装的版本。

为了解决这个问题,我简单地将我的vim命令别名为酿造版本,而不是OSX的默认版本:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

现在我是金的


我是一个Vim newby,但是,复制所有的文本到系统剪贴板(例如,如果你想把它粘贴到文字处理器或其他文本编辑器,如gedit,鼠标垫等…),在正常模式:

ggVGy

或者,更简单地说:

:%y

按照建议,我还安装了vim-gtk和put

设置剪贴板= unnamedplus

在我的。vimrc

一切都很正常

如果你只想复制文本的一部分,使用可视模式(v),选择你想要复制的文本,然后按y。

最后,我建议使用剪贴板程序,如Clipman(我最喜欢的)、Clipit、Parcellite或类似的程序。

(我在Debian Stretch Xfce中使用vim 8.0)

原谅我的英语!:-)


我有问题,因为我的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”进行复制和粘贴。


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 (removes any extraneous vim dependency packages from system) 
$ sudo apt-get install vim-gnome (or `sudo apt-get install vim-gtk3` for newer Ubuntu versions) 

再次检查vim——version | grep .xterm_clipboard -o,您可以确认剪贴板现在是可用的(即。+ xterm_clipboard)


如果你有xclip,一个简单的方法复制文本到剪贴板如下:

你想复制的Yank文本。(香草vim中的y命令) 输入:call system("xclip -selection clipboard", @")

:call system()执行终端命令。它有两个参数,第一个参数是命令,第二个参数是要向该命令输送什么。例如:echom系统("head -1", "Hello\nWorld")返回Hello(带一些填充)。Echom返回命令的输出,而call不返回。

xclip -selection剪贴板只是复制文本到系统剪贴板,而不是默认的X剪贴板,(通过鼠标中间按钮访问)。

@"返回最后一个被猛拉的文本。是默认寄存器,但您可以使用任何寄存器。要查看所有寄存器的内容,输入:registers。


Shift + Ctrl + C 如果你在Linux的图形模式,但首先你需要选择你需要复制什么。


到目前为止,我在MacOsX上使用键盘快捷键已经为此挣扎了几个月。 我知道问题不是关于使用键盘短裤。但这可能会对有同样担忧的人有所帮助。

我发现如果你不勾选:

View ->允许鼠标报告

从终端菜单,您将能够复制到剪贴板使用

Command + c

一次。


在我的实例中,用鼠标高亮显示(单击和拖动)选择文本会导致vim进入可视模式。

在mac上,最简单的解决方案是使用fn +鼠标点击和拖动,以避免进入可视模式。

如果您希望在默认情况下避免这种行为,可以编辑vimrc


此答案包含特定于macOS用户的详细信息。

将以下行追加到~/.vimrc:

set clipboard=unnamed

如果这不起作用,检查您安装的版本是否可能没有启用剪贴板功能。在编写这个答案时(2019年),macOS附带的默认vim没有启用剪贴板选项。您需要该选项来访问系统剪贴板。

要检查您的vim是否启用了该选项,请使用以下命令

vim --version | grep clipboard

结果,你应该有+剪贴板。如果是-clipboard,那么你的VIM没有访问系统剪贴板的选项。

您需要使用所需的选项制作并安装VIM。下面是命令。

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

上面的操作将安装启用选项+剪贴板的最新VIM。

现在您可以将文本拉到系统剪贴板。下面的步骤解释如何拉。

在vim命令模式下按v,这将切换到VISUAL模式。 移动光标以选择需要复制的文本或行。 按y,这将复制选定的文本到剪贴板。 转到任何外部应用程序,CMD + v进行粘贴。

我使用macOS Mojave的MACBook Pro,上面的工作都在里面。


我的解决方案是把下面的行放在。vimrc:

map <C-y> :w !xclip -sel c <CR><CR>

脚本使用Ctrl + y将所选的行(通过可视模式)或文件内容(如果没有被选择)复制到剪贴板。如果这很重要,我使用的是Manjaro Linux。


我在mac osx(10.15.3)和新的vim。我发现这太令人沮丧了,这里所有的答案都太复杂了,或者不适用于我的情况。我最终在两个方面得到了这个工作:

使用pbcopy的键映射:适用于mac附带的旧版本的vim。 将vmap ":w !pbcopy<CR><CR>添加到~/.vimrc中 现在您可以直观地选择并点击“(两个撇号)复制到剪贴板 安装新版本的vim,这样我就可以访问其他答案中最推荐的解决方案: 编译安装vim的别名vim=/usr/local/bin/vim(应该把这个添加到~/。Bashrc或同等语言) 现在您可以直观地选择并点击“+yy复制到剪贴板


这个问题已经有很多答案了。我在添加我的方法,我觉得很快。

快速地,你可以按V (Shift + V)到激活可视模式。在可见模式下,可以使用j和k选择要复制的文本。选择后使用

"*y

现在,选定的文本被复制到剪贴板。


我想补充一种方法来复制一行到剪贴板,并在函数上使用它。

这里有一个你在浏览器中打开URL的例子

let g:chrome_exe = 'C:/.../Google/Chrome/Application/chrome.exe'
function OpenURL()
    " copy the line and put it in the register *
    normal "*yy
    :execute "silent !start ".g:chrome_exe." ".getreg("*")
endfunction

map ,url :call OpenURL()<CR>

在抄写到剪贴板上时,我很吃力。在Vim内部,使用可视模式非常简单,但如果你想复制到剪贴板,事情是相当混乱的。我有一个简单的复制方法使用xclip实用程序。为此,您必须首先安装xclip。

对于整个文件来说非常简单

Xclip -sel剪辑文件名

但如果您只想复制特定范围的行号 Tail -n +[n1] filename | head -n [n2] | xclip -sel剪辑

你可以使用~/。Bashrc来化简

#rangecp copy lines from n1 to n2 from a given file to clipboard
function rangecp()
{
    if [ -f $1 ]
    then
        if [ ! -z $3 ]
        then
            diff=$(($3 - $2 + 1))
            #diff=`expr $3 - $2 + 1`
            tail -n +$2  $1 | head -n $diff | xclip -sel clip
        elif [ ! -z $2 ]
        then
            tail -n +$2  $1 | xclip -sel clip
        else
            echo "Provide a range from [n1] lines to [n2] lines"
        fi
    else
        echo "[ $1 ] file doesn't exist"
    fi
}

then

源~ / . bashrc 如何使用

rangecp filename.txt 50 89
rangecp filename.txt 50

关于这个问题,我看到了很多答案,而解决这个问题的方法是多种答案的结合。

我遵循的步骤,使vim复制到系统剪贴板

使用sudo apt卸载vim。(我太懒了,不知道如何用+剪贴板支持重新编译它。 使用sudo apt Install带有+clipboard的vim-athena安装另一个名为vim-athena的vim包。 添加到~/。Vimrc下面的行:set clipboard=unnamedplus。 通过进入命令模式并输入Source %来查找文件。 保存并退出。

注意: 我使用的是Ubuntu 20.04。


我已经使用这些很多年了:

nnoremap Y "+y
vnoremap Y "+y
nnoremap yY ^"+y$

你现在可以只使用大写Y复制到剪贴板,小写Y不会受到影响,例如通过set clipboard= named,所以你仍然可以选择拷贝是否会到剪贴板。

在ubuntu 21.04, vim 8.2上测试。


在linux gnome (ubuntu, xubuntu等)安装vim-gnome,你将能够使用VISUAL选择,然后正常按Ctrl + C,用Ctrl + V粘贴到其他应用程序

sudo apt install vim-gnome

对于Mac OS X,在终端中:

运行vim——version | grep clipboard检查是否启用了剪贴板(使用+)

将下面的代码添加到.vimrc文件中

如果有(“剪贴板”) Set clipboard= named "复制到系统剪贴板 If has("unnamedplus") "X11支持 设置剪贴板+ = unnamedplus endif endif

重启终端和vim

参考:在Mac OS X上设置Vim到剪贴板


除了vim-gnome, Ubuntu 20.04的neovim默认也支持+y。

如果你不想安装一个新程序,你可以使用cat file.txt或gedit file.txt的惰性方法从那里复制。