如何使vim粘贴(并复制到)系统的剪贴板?
与其他编辑器不同,vim将复制的文本存储在自己的剪贴板中。 所以,我很难从网页上复制一些文本并粘贴到当前工作文件中。 所以我必须打开gedit或手动input。
我可以从系统剪贴板制作vim贴吗?
  "*和"+寄存器用于系统的剪贴板( :help registers )。 根据你的系统,他们可能做不同的事情。 例如,在不使用X11(比如OSX或Windows)的系统上, "*寄存器用于读写系统剪贴板,在X11系统上可以使用这两个寄存器,详细信息请参阅:help x11-selection ,但基本上"*类似于X11的主select(通常用鼠标复制你select的东西并用鼠标中键粘贴), "+类似于X11的CLIPBOARDselect(这是剪贴板本身)。 
 如果所有这一切都过去了,请尝试使用"*yy或"+yy将行复制到系统的剪贴板。 假设你有适当的编译选项,其中一个或另一个应该工作。 您可能希望将其重新映射到更方便的位置。 例如,你可以把vnoremap <Cc> "*y放到你的〜/ .vimrc中,这样你就可以直观地select并按下Ctrl + C来把你的系统的剪贴板插入。 
 请注意,如果出现以下情况,系统剪贴板中的复制/粘贴将不起作用 :echo has('clipboard')返回0.在这种情况下,vim不是用+clipboardfunction编译的,您必须安装不同的版本或重新编译它。 一些Linux发行版默认提供最低限度的vim安装,但通常如果安装vim-gtk软件包,您可以获得额外的function。 
 你也可能想看看在'clipboard' :help cb 'clipboard'描述的'clipboard'选项。 在这种情况下,您可以:set clipboard=unnamed或:set clipboard=unnamedplus ,使所有的:set clipboard=unnamedplus /删除操作自动复制到系统剪贴板。 在某些情况下,如果您在剪贴板中存储其他内容,则会造成不便,因为它会覆盖它。 
 要粘贴,您可以使用"+p或"*p (同样,取决于您的系统和/或所需的select),或者您可以将这些映射到别的东西。 我明确地键入它们,但是我经常发现自己处于插入模式。 如果您处于插入模式,您仍然可以使用<Cr><Cp>*或<Cr><Cp>+它们粘贴到适当的缩进处。 请参阅:help i_CTRL-R_CTRL-P 。 
 还值得一提的是vim的paste选项( :help paste )。 这使vim进入一个特殊的“粘贴模式”,禁用了其他几个选项,使您可以使用terminal仿真器或多路复用器熟悉的粘贴快捷方式轻松粘贴到vim中。 只需键入:set paste来启用它,粘贴您的内容,然后键入:set nopaste将其禁用。 或者,您可以使用pastetoggle选项来设置切换模式的键盘代码( :help pastetoggle )。 我build议使用寄存器,而不是这些选项,但如果他们仍然太可怕,这可以是一个方便的解决方法,而你正在完善你的VIM印章。 
 请参阅:help clipboard了解更多详细信息。 
你可以复制到vim。 在插入模式下创build文件并使用Ctrl + Shift + v 。 记得事前
  :set paste 
避免混淆身份…
Linux的
 在我的Linux系统上, +和*寄存器映射到X11select,可以用鼠标中键来粘贴。 当:set clipboard=unnamed和:set clipboard=unnamedplus ,寄存器映射到剪贴板,并可以用CTRL-V粘贴。 
细节似乎有点configuration和系统依赖,所以你的里程将肯定会有所不同。 不过,这肯定会让你指出正确的方向。
也可以看看
对于我的configuration适用于复制和粘贴
 " copy and paste vmap <Cc> "+yi vmap <Cx> "+c vmap <Cv> c<ESC>"+p imap <Cv> <ESC>"+pa 
这将是你在vimrc中为此目的所需的行:
 set clipboard+=unnamed " use the clipboards of vim and win set paste " Paste from a windows or from vim set go+=a " Visual selection automatically copied to the clipboard 
剪贴板
有一个特殊的寄存器来存储这个select,它是“*”寄存器,除非有关正在select什么文本的信息将要改变(例如用鼠标左键点击)或者当另一个应用程序想要粘贴选中的文本,然后将文本放在“*”寄存器中。 例如,要剪切一条线并将其作为当前select/将其放在剪贴板上:
  "*dd 
类似的,当你想粘贴另一个应用程序的select时,例如,通过点击鼠标中键,select被放在“*”寄存器中,然后像其他任何寄存器一样放入,例如,把select(剪贴板的内容):
  "*p 
寄存器 E354
 > There are nine types of registers: > 1. The unnamed register "" > 2. 10 numbered registers "0 to "9 > 3. The small delete register "- > 4. 26 named registers "a to "z or "A to "Z > 5. four read-only registers ":, "., "% and "# > 6. the expression register "= > 7. The selection and drop registers "*, "+ and "~ > 8. The black hole register "_ > 9. Last search pattern register "/ 
从剪贴板粘贴
 1. Clipboard: Copy 2. Vim insertmode, middle mouse key 
检查terminal中的X11剪贴板支持
当你想在terminal中运行Vim时,你需要寻找一个Vim的版本,这个版本是用剪贴板支持编译的。 检查X11剪贴板支持,从控制台input:
 % vim --version 
如果你看到“+ xterm_clipboard”,你很好走。
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
X服务器保持三种select,称为:
小学,中学和剪贴板
主要select通常用于通过鼠标中键实现复制和粘贴。 SECONDARY和CLIPBOARDselect应用程序较less使用。
我尝试了上面的build议,没有一个在我的环境中工作。 (通过SSH的Windows PuTTY克隆)
一些额外的谷歌search出现: https : //unix.stackexchange.com/questions/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard
 其中一条评论build议使用SHIFT+INSERT ,它将桌面剪贴板粘贴到Vim的缓冲区中。  Ctrl-C已经在从Vim复制到桌面的剪贴板了。 
vim安装不支持*和+寄存器的人的简要说明。 没有必要下载一个新的vim安装从剪贴板粘贴。 这是另一种方法:
1)安装parcellite(一个低内存占用的剪贴板pipe理器);
2)在.vimrc文件中,添加以下内容:
 command Clip r !parcellite -c 
3)重新启动vim。
现在,当您input:Clip作为ex命令时,剪贴板的内容将被粘贴到光标处。 您还可以将新命令映射到function键,以便能够通过一次按键来完成此操作。
没有+剪贴板,所以我想出了这个替代解决scheme使用xsel:
添加到你的〜/ .vimrc中:
 vnoremap <CC> :w !xsel -b<CR><CR> 
 从Conner的回答来看,这很棒,但是插入模式下的CR Cp +和CR Cp *有点不方便。 同上"*p和"+p从命令模式。 
  VIM大师build议如下将Cv映射到Cr Cp +所做的。 
只有
:inoremap <Cv> <Co>"+p适用于插入模式如果你真的想覆盖块视觉模式(不推荐他作为视觉模式是好的),你可以有
map <Cv> "+p
这适用于我: Ctrl + Shift + V
 在设置之上:set clipboard=unnamed ,你应该使用mvim -v ,如果你在Mac OS X 10.9的Terminal.app上使用vim,你可以使用brew install macvim来获得。 默认的vim不支持剪贴板选项。 
值得一提的是,在使用Vim的OSX上,可以使用鼠标select文本Cmd-C复制到OSX系统剪贴板,复制的文本将在Vim之外的剪贴板中可用。
换句话说,OSX把它看作是一个常规的窗口,而这正是苹果“命令”button派上用场的地方。
B-30
基于@ lis2的答案,我使用了一个更简单的configuration,不会在最后强制插入模式:
 " Copy and paste if has('clipboard') && !has('gui_running') vnoremap <Cc> "+y vnoremap <Cx> "+d vnoremap <Cv> "+p inoremap <Cv> <Cr><Co>+ endif 
请注意,所有这些都会覆盖默认的Vim映射:
-   v_CTRL-C:停止可视模式
-   v_CTRL-X:从数字中减去[count]
-   v_CTRL-V:按块可视化模式
-   i_CTRL-V:直接插入下一个非数字,也映射到i_CTRL-Q
 作为一种替代scheme,可以使用分别用“yank”,“delete”和“put”Vim动词的按键: <Cy> , <Cd>和<Cp> 。 这些只会覆盖一个默认映射: 
-   i_CTRL-P:向后search关键字完成
你真正需要的是EasyClip 。 它会做到这一点,还有更多…
当我使用未与Gnome集成的Debian vim(vim –version | grep clip#不显示剪贴板支持)时,我可以在按住Shift键并用鼠标select文本后复制到剪贴板,就像使用其他诅咒程序。 正如我从@Conner发表的评论中得出的那样,terminal(在我的例子中是gnome-terminal)在检测到我的Shift按键时会closures它的鼠标事件报告。 我猜想基于curses的程序可以在发送特定的Escape序列给terminal之后接收鼠标事件。
 如果你在windows上,并且想要使用p粘贴系统剪贴板的内容,那么input这个命令。 
 :set clipboard = unnamed 
这解决了我的问题。
有两个简单的方法来做到这一点。 使您的文件在插入模式下,1)按下鼠标中的中间button(滚轮),或2)Ctrl + Shift + V
 对于一些国际键盘,您可能需要按“ + 空格键" 。 
所以在这种情况下,您将不得不按“ Space + y”或“ Space * y”进行复制。
和“ 空间 + p或” 空间 * p粘贴。
如果您在MAC OSX中使用vim,不幸的是,它带有较旧的版本,而不符合剪贴板选项。 幸运的是,自制软件很容易解决这个问题。
安装vim:
 brew install vim --with-lua --with-override-system-vim 
安装vim的gui verion:
 brew install macvim --with-lua --with-override-system-vim 
重启terminal生效。
  ~/.vimrc附加到~/.vimrc 
 set clipboard=unnamed 
 现在你可以在vim中用yy复制该行,并将其粘贴到系统范围内。 
其他解决scheme是好的,如果你想改变你的vimrc等等。但是我想要一个简单的方法从 vim复制到我的系统键盘。 这是我想出来的。
-  select要用可视模式v复制的文本
-  按::(会自动展开显示:'<,'>)
-  键入y *或y +(取决于您的系统)将所选文本复制到系统剪贴板
有三件事你需要做:
在您的terminal中运行MacVim
不pipe你想要怎么安装macvim。 我用自制软件 :
 brew install macvim 
 添加一个符号链接,这样你可以保持幸福的打字vim : 
 ln -s /usr/local/bin/mvim /usr/local/bin/vim ll /usr/local/bin | grep vim lrwxr-xr-x 1 max admin 19B Mar 1 15:49 vim -> /usr/local/bin/mvim 
您可以在此博客文章中阅读更多关于此的信息 。
 告诉macOS在/usr/local/bin之前search/usr/local/bin /usr/bin 
  PATHvariables是macOSsearch查找二进制文件的目录列表。 我们希望macOS在find系统vim之前find我们的符号链接。 这个configuration位于/etc/paths文件中: 
 $ sudo vim /etc/paths Password: $ cat /etc/paths /usr/local/bin /usr/bin /bin /usr/sbin /sbin $ which vim /usr/local/bin/vim 
你可以在另一个答案阅读更多关于这个
 将一些configuration添加到~/.vimrc文件中 
 在你的~/.vimrc文件的某个地方添加下面一行: 
 set clipboard=unnamed 
你可以在vim wiki上阅读更多关于这个的信息
 现在,像yy , D和P这样的操作就和系统剪贴板一起工作了。 不需要用"+或"*作为前缀。 
 对此最简单的解决scheme,也可以通过ssh在不同的Linux机器上ssh : 
- 
检查vim是否支持X-11剪贴板: vim --version | grep clipboardvim --version | grep clipboard。 如果它返回-clipboard和-xterm_clipboard,则应该安装vim-gtk或vim-gnome(在arch linux上的gvim)
- 
将下列行添加到 .vimrc:
set clipboard=unnamedplus set paste
-  如果你通过ssh在不同的机器上login,使用-Y: ssh -Y machine
 现在复制和粘贴应该完全按照预期在单个和不同的机器上工作,只需要使用y来代替yank和p来粘贴。 注意在您要使用此function的所有机器上修改.vimrc 。