如何在vi中选择完整的文件,并将其粘贴到gedit中?

如何在vi中选择完整的文件,并将其粘贴到gedit中?

我知道这样做%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+Vshift+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命令粘贴

相关内容