首页 文章

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

提问于
浏览
597

是否可以直接从Vim复制到剪贴板? yy 只复制东西给Vim 's internal buffer. I want to copy to the OS' s剪贴板 . 在Vim中有没有这样的命令,或者你只能在Vim中猛拉东西?

26 回答

  • 16

    如果您的vim恰好在没有 +xterm_clipboard 选项的情况下编译,就像默认情况下在Debian中编译而我猜Ubuntu,您可以选择管道或整个缓冲区来处理桌面剪贴板的外部程序 . 对于 xclip (您可能需要先安装),命令将为 :w !xclip -sel clip

  • 2

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

    对于Linux:首先,您必须通过安装 gvim 在vim版本中启用剪贴板 .


    接下来,您必须将此行放在 .vimrc 文件上 .

    set clipboard=unnamedplus

  • 4

    仅在ubuntu终端下的vim中,

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

    然后 ctrl + v 在其他编辑器上

  • 20

    * 寄存器将执行此操作 . 在Windows中, +* 是等效的 . 在unix中, +* 之间存在细微差别:

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

    * 可能是你大多数时候想要的,所以我使用 * 因为它在两种环境中都能正常运行 .

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

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

  • 2

    在Mac上 OSX

    • 复制所选部分:直观地选择文本(在正常模式下键入 vV )并键入 :w !pbcopy

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

    • 从剪贴板粘贴 :r !pbpaste

    在大多数 Linux 发行版中,您可以替换:

    • pbcopy 以上 xclip -i -sel cxsel -i -b

    • pbpaste 使用 xclip -o -sel -cxsel -o -b

    • Note: 如果您的发行版上没有预安装这些工具( xselxclip ),您可以在回购中找到它们

  • 5

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

    在Windows上设置:

    set clipboard=unnamed
    

    在Linux上设置(vim 7.3.74):

    set clipboard=unnamedplus
    

    注意:您可能需要使用最新版本的Vim才能使用它们 .

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

  • 113

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

    同样,您可以从 "+ 粘贴以从系统剪贴板获取文本(即 "+p 而不是 p ) .

  • 126

    @Jacob Dalton在一条评论中提到了这一点,但似乎没有人在回答中提到vim必须使用剪贴板支持编译,这里提到的任何建议都可以使用 . 默认情况下我没有在Mac OS X上配置Mine,我不得不重建vim . 使用此命令查明您是否拥有它 vim --version | grep 'clipboard' . +clipboard 意味着你很好,这里的建议对你有用,而 -clipboard 意味着你必须重新编译和重建vim .

  • 2

    总结并让新手更容易,

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

    "*yy
    

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

    "*yG
    

    如上所述,这需要 vim --version vim --version ,这表明剪贴板支持的可用性, -clipboard 表示没有 .

  • 12

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

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

    但是,如果您接下来添加此行,它将允许您只需 Ctrl+c 即可将您选择的任何内容添加到剪贴板中 .

    vmap <C-c> "+y
    

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

  • 56

    如果你在MAC OSX中使用vim,不幸的是它配备了较旧版本,并且没有符合剪贴板选项 . 幸运的是,自制软件可以轻松解决这个问题 .

    install vim:

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

    install gui verion of vim:

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

    重启终端才能生效 .

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

    现在你可以用 yy 复制vim中的行并在系统范围内粘贴它 .

    Updated Method

    多年来我一直对set clipboard方法感到满意 . 最大的缺点是它会弄乱你的剪贴板历史记录,即使你使用 x 进行删除也是如此 . 这是一个更好,更优雅的解决方案 .

    • 将vim的文本[范围]复制到系统剪贴板中 . (提示:首先使用 vV 选择范围,然后键入冒号 : 以激活Ex命令):
      :[range]yank +
      例如 . ,
      :5,10y * (复制/ yank行5-10到系统剪贴板 * 寄存器)

    • 将系统剪贴板中的内容粘贴到新行上的vim中:
      :put +

  • 1

    我的解决方案是安装包含剪贴板选项的附加vim:

    sudo apt-get install vim-gnome
    
  • 1

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

  • 271

    For Ubuntu - July 2018

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

    同样,您可以从 "+ 粘贴以从系统剪贴板获取文本(即 "+p 而不是 p ) .

    您还必须确保编译vim时支持剪贴板 . 尝试:

    vim --version | grep .xterm_clipboard -o
    

    如果是的话 -xterm_clipboard (减去前缀)然后你做 not 有支持 .

    以下是使用具有剪贴板支持的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

    祝好运 .

  • 14

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

    • 要复制的Yank文本 . ( y 命令在vanilla vim中)

    • 输入 :call system("xclip -selection clipboard", @")

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

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

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

  • 4

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

    vnoremap:w!cp / dev / null~ / temp.txt && cat>〜/ temp.txt

    noremap:r!cat~ / temp.txt

  • 1
    • set clipboard=unnamed 放在 vimrc 中 .

    • Visual 模式中选择要复制的内容(按v进入) .

    • 返回 Normal 模式(按escape [esc]),按y进行复制 .

    • 如果要从OS的剪贴板粘贴内容,请在Vim Normal 模式下按p / P.

  • 49

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

    ggVGy

    或者,更简单地说:

    :%y

    按照建议,我也安装了 vim-gtk 并且放了

    set clipboard=unnamedplus

    在我的.vimrc中

    一切正常

    如果要仅复制部分文本,请使用 visual mode (v) ,选择要复制的文本,然后按 y .

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

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

    为我的英语请求我! :-)

  • 0

    我在.vimrc中写了一个简单的行来获得复制工作 . 希望这有助于某人 . 不幸的是,我的vim没有安装剪贴板支持,所以这些建议都不适合我 . 基本上,将此行粘贴到.vimrc中:

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

    如果您想阅读有关此功能的详细信息,可以在my blog上阅读此内容 .

  • 10

    对于某些国际键盘,您可能需要按“空格来获得 " ” .

    因此,在这种情况下,您必须按“Space y或”Space * y

  • 5

    如果您不想为vim使用任何图形界面,并且您更喜欢坚持使用终端仿真器,那么可能会有一个更简单的方法来解决这个问题 . 不要使用yank或类似的东西,首先看一下你使用的终端文档 . 我一直在努力解决同样的问题(试图使用剪贴板和xclip等),最后我发现在我的终端模拟器中只需按shift并选择你要复制的任何文本就足够了 . 而已 . 非常简单,不需要搞乱配置 . (我顺便使用urxvt) .

  • 0

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

    • 突出显示要复制的文本(您可以逐页复制)

    • 按ctrl c(它会将文本复制到剪贴板

    • 粘贴在任何外部编辑器中完成

  • 407

    selectingmouseright-click copy 的帮助下工作在我的情况下 .

    我不想要包含行号,所以我 :set nonumbercopying 之前 .

  • 8

    我有问题,因为我的vim不支持 clipboard

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

  • 17

    上面没有任何东西在我的窗户上工作笔记本电脑 .

    Ctrl C很适合复制..但我需要Shift Insert to Paste!

    (总是得到一台笔记本电脑的好理由,无需按下辅助键即可随时访问Insert)

  • 3

    对于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"
    

    而现在我是金色的

相关问题