Vim复制粘贴到系统缓冲区的行为不符合预期

Vim复制粘贴到系统缓冲区的行为不符合预期,vim,buffer,x11,copy-paste,Vim,Buffer,X11,Copy Paste,我很头痛,想弄明白为什么vim没有复制到系统缓冲区 以下是我的工作流程: vim asd y1y :q vim qwe p 在computerA和computerB上,这是我想要的:从文件asd中拉出的行被放入文件qwe中 在computerC上,这不起作用 所有系统都运行Ubuntu 8.04。computerA安装了vim完整软件包,computerB和computerC安装了vim软件包。computerA已安装xorg,正在使用fluxbox窗口管理器,并可在本地访问。computer

我很头痛,想弄明白为什么vim没有复制到系统缓冲区

以下是我的工作流程:

vim asd
y1y
:q
vim qwe
p
在computerA和computerB上,这是我想要的:从文件asd中拉出的行被放入文件qwe中

在computerC上,这不起作用

所有系统都运行Ubuntu 8.04。computerA安装了vim完整软件包,computerB和computerC安装了vim软件包。computerA已安装xorg,正在使用fluxbox窗口管理器,并可在本地访问。computerB和computerC没有X,我对它们都感兴趣

我读了很多书,认为这是因为computerC是用-clipboard编译的,但我在所有三台计算机上都运行了vim-version,只有computerA是用+clipboard编译的

我错过了什么明显的东西吗?我相信用户的.vimrc和全局vimrc文件是相同的。如果有帮助的话,我可以发布vim的输出——vimrc文件的版本和内容。

查看.viminfo 如果你最后拉的东西是hi,它应该包含:

登记册: “”0第0行 嗨

可能是文件权限搞乱了?

查看.viminfo 如果你最后拉的东西是hi,它应该包含:

登记册: “”0第0行 嗨

可能是文件权限弄乱了?

尝试以下操作:

set clipboard=unnamed
它允许通过系统剪贴板进行复制和粘贴。

尝试以下操作:

set clipboard=unnamed

它允许通过系统剪贴板进行复制和粘贴。

默认情况下,Vim不会复制到系统缓冲区。它记住内容的唯一方法是,如果vim的多个实例使用相同的.viminfo文件。可能由于文件权限或
'viminfo'
(选项)中的不同设置,.viminfo文件未被写入

有关viminfo配置的更多信息,请参阅

:help 'viminfo'
要查看每台计算机上的当前配置,请执行以下操作:

:set viminfo?
另外,如果要使用系统剪贴板(必须存在,因此需要执行
ssh-X
),可以使用:

:set clipboard+=unnamed
然后,所有复制和粘贴操作都将使用X11选择缓冲区。当然,您需要使用
+clipboard
编译vim,这样才能工作,所以它不会解决您眼前的问题。见:

:help 'clipboard'
了解更多信息

也许您可以在每台计算机上发布以下结果

:set viminfo?
:set clipboard?
这将有助于我们更详细地诊断问题。你也可以试试:

vim asd
"ayy
:q
vim qwe
"ap

这将使用寄存器
a
而不是未命名的寄存器。

默认情况下,Vim不会复制到系统缓冲区。它记住内容的唯一方法是,如果vim的多个实例使用相同的.viminfo文件。可能由于文件权限或
'viminfo'
(选项)中的不同设置,.viminfo文件未被写入

有关viminfo配置的更多信息,请参阅

:help 'viminfo'
要查看每台计算机上的当前配置,请执行以下操作:

:set viminfo?
另外,如果要使用系统剪贴板(必须存在,因此需要执行
ssh-X
),可以使用:

:set clipboard+=unnamed
然后,所有复制和粘贴操作都将使用X11选择缓冲区。当然,您需要使用
+clipboard
编译vim,这样才能工作,所以它不会解决您眼前的问题。见:

:help 'clipboard'
了解更多信息

也许您可以在每台计算机上发布以下结果

:set viminfo?
:set clipboard?
这将有助于我们更详细地诊断问题。你也可以试试:

vim asd
"ayy
:q
vim qwe
"ap
这将使用寄存器
a
而不是未命名的寄存器。

这并不能完全解决您的问题,但是一个非常好的解决方法是

vim asd
y1y
:sp qwe
p
:q
这将打开
asd
并从中拉出(显然),然后拆分打开
qwe
放入您刚刚拉出的项目,并关闭拆分打开的文件。使用这种方法,无需关闭正在处理的文档,即可启动一个新的Vim实例

如果您不喜欢水平拆分,
:vsp会进行垂直拆分,这有时会更易于阅读/使用。

这并不能完全解决您的问题,但一个非常好的解决方法是

vim asd
y1y
:sp qwe
p
:q
这将打开
asd
并从中拉出(显然),然后拆分打开
qwe
放入您刚刚拉出的项目,并关闭拆分打开的文件。使用这种方法,无需关闭正在处理的文档,即可启动一个新的Vim实例

如果您不喜欢水平拆分,
:vsp会进行垂直拆分,这有时更易于阅读/使用。

为什么不使用
“+y
”+p
,它们直接与系统的剪贴板缓冲区一起工作

vim asd
"+y
:q
vim qwe
"+p
为什么不使用
“+y
”+p
,它们直接与系统的剪贴板缓冲区一起工作

vim asd
"+y
:q
vim qwe
"+p

好的,我不知道系统缓冲区的问题,但是如果需要的话,简单地用
:e filename
打开新文件,然后粘贴,然后保存并
:e#
返回原始文件怎么样?是的,我知道,制表符和拆分很酷,但简单也可以


您也可以使用ex,从目标文件通过提供行范围的
:r
命令读取要包含的内容,或从源文件使用
:w>文件名
确定来附加所选文本(通过简单的行号/范围或万能的
g
命令),我不知道系统缓冲区的问题,但是如果需要的话,简单地用
:e filename
打开新文件,然后粘贴,然后保存并
:e#
返回原始文件怎么样?是的,我知道,制表符和拆分很酷,但简单也可以

您还可以使用ex,从目标文件通过提供行范围的
:r
命令读取要包含的内容,或从源文件读取要包含的内容