网站搜索

从终端跨多个 Vim 实例访问剪贴板内容


Vim (Vi IMproved) 是程序员中最喜欢的文本编辑器之一。它在用速记命令执行不同的操作方面有自己的特色。

例如,要复制突出显示的文本,我们使用“y”命令和“x”命令来剪切相同的文本。但是,默认情况下 vim(而不是 gVim)在关闭 vim 实例后无法访问剪贴板内容。

Vim 使用‘+’寄存器来引用系统剪贴板。您可以运行“vim –version”,如果您看不到“+xterm_clipboard”之类的内容,而是看到“xterm_clipboard”,则表示内部剪贴板内容在 vim 之外不可用。

安装 gvim 和 Parcellite

为了访问vim剪贴板内容,您需要安装gvim包。 gVim 是 vim 编辑器的 GUI 模式,默认情况下启用剪贴板选项。

yum install -y gvim

接下来,启用 RPMForge Repository 以安装 parcellite 软件包。 Parcellite 是一款轻量级、小型且免费的 Linux 剪贴板管理器。

yum install -y parcellite

安装后,运行以下命令。其中参数“&”用于发送parcellite作为后台进程运行。

parcellite &

检查gvim中是否启用了该选项。

gvim --version

确保输出中显示“+xterm_clipboard”选项,如下所示。

VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr  5 2012 10:12:08)
Included patches: 1-411
Modified by <[email >
Compiled by <[email >
Huge version with GTK2 GUI.  Features included (+) or not (-):
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent 
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+cryptv +cscope +cursorshape +dialog_con_gui +diff +digraphs +dnd -ebcdic 
+emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path 
+float +folding -footer +fork() +gettext -hangul_input +iconv +insert_expand 
+jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap 
+menu +mksession +modify_fname +mouse +mouseshape +mouse_dec +mouse_gpm 
-mouse_jsbterm +mouse_netterm -mouse_sysmouse +mouse_xterm +multi_byte 
+multi_lang -mzscheme +netbeans_intg -osfiletype +path_extra +perl +postscript 
+printer +profile +python +quickfix +reltime +rightleft -ruby +scrollbind 
+signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax 
+tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse 
+textobjects +title +toolbar +user_commands +vertsplit +virtualedit +visual 
+visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup 
+X11 -xfontset +xim +xsmp_interact +xterm_clipboard -xterm_save

打开用户的 .bashrc 文件。

vim ~/.bashrc

添加别名并保存文件(按'i'插入行并按ESC,然后运行:wq保存并退出) 。

.bashrc

User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vim='gvim -v'
Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

该别名是一个内置命令,用于绕过某些命令到另一个命令。因此,每次发出 vim 命令时,相应的别名都会转到默认启用剪贴板的 gvim。

现在以类似的方式编辑您的 '.vimrc' 文件(如果您没有 .vimrc 文件,请通过生成一个这样的文件,然后返回此处。

vim ~/.vimrc

附加以下行并保存文件。

autocmd VimLeave * call system("echo -n $'" . escape(getreg(), "'") . "' | xsel -ib")

现在在 vim 中打开任何文件并突出显示文本部分(使用“v”命令),然后按“+y”。尝试粘贴到 vim 之外的任何地方(关闭或不关闭 vim 后),然后就完成了。

生成 .vimrc 文件

运行以下命令生成 .vimrc 文件(如果已经有则跳过此部分)。

cd   [This will put you in home directory]       
vim .vimrc

在 vim 中,按 ESC 键后运行以下命令(在 vim 中,每个命令都是在按 ESC 键后运行,这使您进入命令模式)。

:r $VIMRUNTIME/vimrc_example.vim 
:w