2009-09-03 85 views
1

我很头疼,想知道为什么vim没有复制到系统缓冲区。Vim复制粘贴到系统缓冲区没有像预期的那样运行

这是我的工作流程:

vim asd 
y1y 
:q 
vim qwe 
p 

在computerA和computerB,这个工程,我希望它:从文件ASD猛拉线投入该文件QWE。

在computerC上,这不起作用。

所有系统都运行Ubuntu 8.04。 computerA安装了vim-full软件包,computerB和computerC安装了vim软件包。 computerA安装了xorg,正在使用fluxbox窗口管理器,并在本地进行访问。 computerB和computerC没有X,而我正在对他们两个进行研究。

我已经做了很多的阅读,并认为这是因为computerC与-clipboard编译,但是我跑了所有三台计算机的vim --version只有computerA与+剪贴板编译。

我错过了一些明显的东西吗?我相信用户的.vimrc和全局vimrc文件是一样的。如果可以帮助,我可以发布vim --version的输出和vimrc文件的内容。

回答

5

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

有关的viminfo配置的详细信息,请参阅

:help 'viminfo' 

要查看每台计算机上当前配置,这样做:

:set viminfo? 

顺便说一句,如果你想使用该系统剪贴板(必须存在,所以你需要做的ssh -X),你可以使用:

:set clipboard+=unnamed 

然后所有的复制和粘贴操作将使用X11选择缓冲区。当然,你需要用VIM为+clipboard这个工作编译,所以它不会解决你眼前的问题。参见:

:help 'clipboard' 

欲了解更多信息。

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

:set viminfo? 
:set clipboard? 

这会帮助我们更详细地诊断问题。莫非你也试试:

vim asd 
"ayy 
:q 
vim qwe 
"ap 

这将使用登记a,而不是无名寄存器。

+0

谢谢艾尔,你是对的。 〜/ .viminfo被root拥有:root - 我第一次使用vim时必须有sudoed或者什么?正在用系统剪贴板吠叫错误的树,感谢您的答案和新知识! – nfm 2009-09-04 06:56:22

+0

Al的解决方案让我有一天 – lucapette 2011-02-16 17:14:50

+0

您提到了剪贴板,这是当文本高光时,或者当您单击鼠标中键时使用的。你知道系统剪贴板被称为什么吗?我基本上想做'设置sysClipboard + =未命名' – puk 2012-01-06 12:23:12

1

采取.viminfo 看看你拷贝的最后一件事是喜它应该包含:

寄存器:

“” 0线0 喜

可能是文件权限搞乱向上?

+0

谢谢蒂莫西,文件权限确实是borked! – nfm 2009-09-04 06:56:59

-1

试试这个:

set clipboard=unnamed 

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

+1

OP声明只有computerA是用+剪贴板编译的,所以这对computerB或computerC不起作用。 – DrAl 2009-09-03 10:05:32

0

它不完全解决您的问题,而是一个完全正常的解决方法是

vim asd 
y1y 
:sp qwe 
p 
:q 

将打开asd,并从它(显然)抽出,然后分割开qweput您刚刚抽出的项目,然后关闭分割打开的文件。通过这种方法,您无需关闭正在开发Vim的新实例的文档。

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

+0

此外,':tabn qwe'使用该文件创建一个新选项卡,这更易于使用。 :gt&:gT切换选项卡,顺便说一句。 – 2009-09-03 11:17:12

+0

':gT'和':gt'给了我E492(不是一个编辑器命令),但':tabn'(无参数)和':tabp'工作(使用Vim 7.2)。我通常更喜欢分割,因为我可以同时看到两个文档。 – 2009-09-03 11:23:12

2

为什么不使用"+y"+p,他们的工作直接与系统的剪贴板缓冲区

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

-1:从原帖:“只有computerA是用+剪贴板编译的”。因此,这只能在computerA上运行(除非它恰好通过viminfo机制保存在未命名的注册表中,OP已经声明这种机制不起作用)。 – DrAl 2009-09-03 14:05:34

+0

这也是相当多的税收http://stackoverflow.com/questions/8757395/can-vim-use-the-system-buffer-by-default – puk 2012-01-06 12:17:12

0

OK,我不知道的系统缓冲区的问题,但对于简单地:e filename打开新文件,然后粘贴,然后保存并根据需要返回原始文件?是的,我知道,选项卡和分裂很酷,但简单也可以完成这项工作。

您也可以使用ex,从目标文件读取要通过提供行范围的:r命令或从源文件附加选定文本(通过简单行号/范围或全能的g命令)与:w >> filename

相关问题