代码之家  ›  专栏  ›  技术社区  ›  Hari Menon

如何在VIM中复制到剪贴板?

  •  641
  • Hari Menon  · 技术社区  · 15 年前

    是否可以直接从VIM复制到剪贴板? yy 只将内容复制到vim的内部缓冲区。我想复制到操作系统的剪贴板。在维姆身上有没有这样的命令,或者你只能在维姆身上猛拉东西?

    27 回复  |  直到 6 年前
        1
  •  444
  •   LangeHaare cfedermann    7 年前

    这个 * 寄存器将执行此操作。在Windows中, + * + * :

    在Windows下,*和+寄存器 是等效的。对于x11系统, 尽管如此,他们还是有所不同。对于x11系统, *是所选内容,+是剪切缓冲区(如剪贴板)。 http://vim.wikia.com/wiki/Accessing_the_system_clipboard

    * 可能是你大多数时候想要的,所以我用 * 因为它在两种环境中都能像我期望的那样工作。

    在Linux发行版中,出于某种原因,必须首先安装vim gtk才能获得剪贴板功能。

    对于那些在拉或放时对如何使用寄存器感到困惑的人,你只需写 " 然后是寄存器的名称。因此,如果要将某个内容复制到剪贴板,请键入 "*y 然后输入 "*p

        2
  •  292
  •   holms    9 年前

    在MAC上 OSX

    • 复制所选部件:视觉选择文本(类型 v V 正常情况下 模式)和类型 :w !pbcopy

    • 复制整个文件 :%w !pbcopy

    • 从剪贴板粘贴 :r !pbpaste

    Linux

    • pbcopy 以上 xclip -i -sel c xsel -i -b
    • pbpaste 使用 xclip -o -sel -c xsel -o -b
      —— 注: 如果这些工具都不是( xsel xclip )预装在您的发行版上,您可能可以在repos中找到它们。
        3
  •  141
  •   Gary Willoughby    13 年前

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

    Windows集:

    set clipboard=unnamed
    

    在Linux上(VIM 7.3.74+):

    set clipboard=unnamedplus
    

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

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

        4
  •  114
  •   Cascabel    15 年前

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

    同样,你也可以从 “+” 从系统剪贴板获取文本(即 "+p 而不是 p )

        5
  •  66
  •   gkb0986    12 年前

    @JacobDalton在评论中提到过这一点,但似乎没有人在回答中提到Vim必须使用剪贴板支持进行编译,才能使这里提到的任何建议发挥作用。默认情况下,我的配置在MacOSX上不是那样的,我必须重新构建VIM。使用此命令可以确定您是否拥有它 vim --version | grep 'clipboard' . +clipboard 意思是你很好,这里的建议对你有用,而 -clipboard 意味着您必须重新编译和重建VIM。

        6
  •  52
  •   ryenus    10 年前

    总结,让新手更容易,

    要复制当前行,请在命令模式下键入:

    "*yy
    

    要复制整个文件/缓冲区,在命令模式下,首先通过 gg 然后类型

    "*yG
    

    如前所述,这需要 +clipboard 由于 vim --version ,表示剪贴板支持的可用性, -clipboard 意思是没有。

        7
  •  23
  •   Community CDub    8 年前

    我无法复制到剪贴板的系统,因为我的~/.vimrc文件中有这个:

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

    但是,如果您下一步添加这一行,它将允许您简单地 Ctrl键 + C 从剪贴板中获取所选内容。

    vmap <C-c> "+y
    

    原始讨论和更多详细信息: Copy text out of vim with set mouse=a enabled

        8
  •  20
  •   Rob Bednark Bohdan    7 年前

    如果您在MacOSX中使用VIM,不幸的是它附带了老版本的Verion,并且不符合剪贴板选项。幸运的是,自制啤酒可以很容易地解决这个问题。

    安装VIM:

    brew install vim --with-lua --with-override-system-vim

    安装VIM的GUI版本:

    brew install macvim --with-lua --with-override-system-vim

    重新启动终端以生效。


    将以下行附加到~/.vimrc
    set clipboard=unnamed

    现在你可以复制Vim中的行 yy 并在系统范围内粘贴。



    更新方法 :

    多年来我一直对设置剪贴板的方法不满意。最大的缺点是它会破坏你的剪贴板历史,即使你使用 x

    1. 将VIM的文本[范围]复制到系统剪贴板中。(提示:使用 v V 要先选择范围,然后键入冒号 : 要激活ex命令,请执行以下操作:
      :[range]yank +
      例如。,
      :5,10y * (将第5-10行复制/拖动到系统剪贴板 * 登记册)

    2. 将系统剪贴板中的内容粘贴到新行上的VIM中:
      :put +

        9
  •  18
  •   AbcAeffchen    11 年前

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

    sudo apt-get install vim-gnome
    
        10
  •  15
  •   arcseldon    7 年前

    适用于Ubuntu-2018年7月

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

    同样,你也可以从 “+” 从系统剪贴板获取文本(即 “+P” 而不是 )

    您还必须确保VIM是在支持剪贴板的情况下编译的。尝试:

    vim --version | grep .xterm_clipboard -o 
    

    如果它是 -Xterm_剪贴板 (一个减号前缀)然后你就可以了 有支持。

    以下是一些关于与支持剪贴板的VIM工作版本交换的说明。

    • $sudo apt获取清除vim
    • $sudo apt get autoremove(删除任何 来自系统的外来VIM依赖包)
    • $sudo apt get安装vim gnome

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

    祝你好运。

        11
  •  14
  •   Benoit    15 年前

    如果你使用的是GVIM,你也可以 set guioptions+=a . 这将触发自动复制到剪贴板中您在视觉模式中突出显示的文本。
    缺点:请注意,高级剪贴板管理器(具有历史记录)在这种情况下将获取所有选择历史记录。

        12
  •  10
  •   Hnatt    11 年前

    如果您的VIM恰好是在没有 +xterm_clipboard 像在Debian和Ubuntu中默认的那样,您可以将选择或整个缓冲区通过管道传输到处理桌面剪贴板的外部程序。为了 xclip (您以前可能需要安装),该命令将 :w !xclip -sel clip

        13
  •  10
  •   HOuadhour    8 年前

    你可以在这里找到答案 Arch Wiki

    Linux: 首先,您必须通过安装 gvim .


    接下来你必须把这条线放到你的 .vimrc 文件。

    set clipboard=unnamedplus

        14
  •  7
  •   Supawat Pusavanno    9 年前

    仅在Ubuntu终端下的VIM中,

    shift + drag mouse 在VIM中选择文本,然后 ctrl + shift + c 在终端上

    然后 ctrl + v 论其他编辑

        15
  •  5
  •   John AZ1    7 年前

    如果使用xclip,将文本复制到剪贴板的简单方法如下:

    1. 把你要复制的文本拉出来。( y 香草味指令)
    2. 键入 :call system("xclip -selection clipboard", @")

    :call system() 运行终端命令。它需要两个参数,第一个是命令,第二个是管道到该命令的内容。例如 :echom system("head -1", "Hello\nWorld") 返回hello(带一些填充)。echom返回命令的输出,而call则不返回。

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

    @" 返回最后一个突出显示的文本。“是默认寄存器,但可以使用任何寄存器。要查看所有寄存器的内容,请键入 :registers .

        16
  •  4
  •   user4897781    10 年前

    也许有人会发现它很有用。我想独立于X剪贴板,仍然能够在两个运行的VIMS之间复制和粘贴一些文本。这个小代码将所选文本保存在temp.txt文件中以便复制。将下面的代码放入.vimrc中。使用ctrl-c ctrl-v来完成此项工作。

    VNOMMAP:W!cp/dev/null~/temp.txt&cat>~/temp.txt

    诺娜马克:R!CAT/TEMP.TXT

        17
  •  4
  •   BigPa    9 年前
    1. set clipboard=unnamed 在你 vimrc .
    2. 选择要复制的内容 Visual 模式(按V键进入)。
    3. 回到 Normal 模式(按Esc[Esc]),按Y复制。
    4. 如果要从操作系统的剪贴板中粘贴某些内容,请在vim中按p/p。 正常的 模式。
        18
  •  3
  •   Bertrando Goio    7 年前

    我是VIM新手,但在正常模式下,将所有文本复制到系统剪贴板(例如,如果您想将其粘贴到字处理器或其他文本编辑器(如Gedit、MousePad等)中:

    GGVGY

    或者更简单地说:

    %y

    按照建议,我也安装了 VIM GTK

    设置剪贴板=unnamedplus

    在我的VIMRC中

    一切都很好

    如果只想复制一部分文本,请使用 视觉模式(V) ,选择要复制的文本,然后按 Y .

    最后,我建议使用剪贴板程序,比如clipman(我最喜欢)、clipit、parcellite或类似程序。

    (我在Debian Stretch XFCE中使用VIM 8.0)

    原谅我的英语!-)

        19
  •  2
  •   songz    11 年前

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

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

    如果你想详细了解它的作用,你可以在 my blog

        20
  •  2
  •   Arthur F    10 年前

    对于某些国际键盘,您可能需要按 + 空间 得到一个 " .

    所以在这种情况下,你必须 空间 + Y 空间 * Y

        21
  •  2
  •   alagris    9 年前

    如果您不想为VIM使用任何图形界面,并且您更喜欢使用终端仿真器,那么可能有一种更简单的方法来解决这个问题。不要使用Yank或类似的工具,首先查看您使用的终端文档。我一直在努力解决同一个问题(尝试使用+剪贴板和xclip等),最终发现,在我的终端模拟器中,只需按shift并选择任何要复制的文本就足够了。就是这样。非常简单,不需要破坏配置。(顺便说一下,我用的是URXVT)。

        22
  •  1
  •   Pratik    9 年前

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

    • 突出显示要复制的文本(可以逐页复制)
    • 按ctrl+c(它将把文本复制到剪贴板
    • 粘贴到任何外部编辑器中 多恩
        23
  •  1
  •   abbood    8 年前

    对于OSX,正如上面所说的10342答案,您需要确保VIM支持剪贴板功能,并说OSX附带的那个不支持剪贴板,如果您运行 brew install vim 它会起作用的。

    但是,运行vi仍然会使您运行预装的OSX版本,而不是从BREW安装的版本。

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

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

    现在我是金色的

        24
  •  1
  •   me_astr    7 年前

    我有问题是因为我的维姆不支持 剪贴板 :

    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”进行复制和粘贴。

        25
  •  0
  •   Neithan Max    8 年前

    selecting 在…的帮助下 mouse right-click copy 在我的案子里工作过。

    我不想包括电话号码,所以我 :set nonumber 之前 copying .

        26
  •  0
  •   SherylHohman David    8 年前

    在我的Windows笔记本电脑上,上面的任何东西对我都不起作用。

    Ctrl键 + C 可以复印……但我需要 换档 + 插入 粘贴!

    (一个很好的理由总是在 插入 始终可以在不按辅助键的情况下访问)

        27
  •  0
  •   prosti    6 年前

    shift > ctrl > c 如果您在Linux的图形模式下,但首先需要选择您需要复制的内容。

    enter image description here