我知道这样做%y a
会将完整的文件拉入寄存器a
。但是,这对于将文件内容粘贴到另一个文本编辑器(例如 gedit)中没有帮助。这样做有什么替代方法吗?
答案1
不是将文件内容拉入a
寄存器,*
而是+
使用以下方法之一将文件内容拉入 X 剪贴板:
:%y*
:%y+
这确实要求您使用已编译 X 支持并能够连接到 X 服务器的 vim 副本。哪种方式更适合您取决于目标编辑器使用哪种类型的剪贴板。
您甚至可以通过在文件中包含以下内容之一,将这些寄存器之一用作复制和粘贴操作的默认值.vimrc
:
set clipboard+=unnamed
set clipboard+=unnamedplus
答案2
不确定是否vi
需要此操作。
有xclip
一个实用程序允许您将控制台输出中的任何内容复制到 x 服务器剪贴板。
您应该指定DISPLAY=:0.0
环境并像这样执行它:
cat file | xclip
或对于远程文件
ssh remote "cat file" | xclip
或者来自vi
(注意,这种方式将暂时清除 vi 缓冲区内容,要撤销它,请按Esc
+ u
,数据将保留在 X cilpboard 中):
:%!xclip
现在您可以使用鼠标中键将其粘贴到任何地方(请注意,这CTRL+V
或shift+ins
不起作用)。
答案3
如果您经常发现自己需要同时使用 Vim 和 gedit,那么您可能应该切换到 gVim,即 Vim 的 GUI 版本。
看来您使用的是 Ubuntu,默认情况下未安装 gVim。使用此命令来获取它:
$ sudo apt-get install vim-gnome
还有vim-gtk
一个不依赖于 Gnome,但由于您使用的是 gedit,因此您必须使用基于 Gnome 的 Ubuntu 版本之一。
答案4
我通过将以下别名添加到我的.bashrc
alias vim='gvim -v'
并将.vimrc
剪贴板设置为unnamedplus
set clipboard=unnamedplus
然后 yank:ed 文本被复制到全局缓冲区,并且可以使用 ctrl+v 粘贴到 gedit 中。全局复制的文本也可以使用 vimp
命令粘贴