在vim中复制/粘贴的默认缓冲区大小是多少?

27

我试图从vim会话中复制150行以粘贴到其他地方。我的第一个想法是使用

150Y

我执行了:q,然后打开了vim (otherProgram).py并按下 'p'键,只复制了50行。 于是我回到原始文档中,使用shift-v选择所需的行,然后按y,切换到另一个文档,按下p。它似乎也没有完全复制过来,仍然只有50行。

我开始觉得vim的默认复制缓冲区大小可能有限制。我正在使用Mac OS X操作系统。 是否有方法可以查找有没有默认的缓冲区大小?是否可以更改它呢?


1
你通过“回到,去到”做了什么?为什么要使用:q,你可以使用:e (otherprogram).py - Kent
这不是关于内部缓冲区大小的问题(它仅受可用内存限制),而是关于在您退出并重新启动 Vim 后 _viminfo 文件中寄存器内容的持久性。 - Ingo Karkat
3个回答

38

看起来你需要在你的 .vimrc 文件中加入类似于这样的内容:

set viminfo='20,<1000

重要的部分是<1000,这表示您希望每个寄存器最多存储1000行。在设置viminfo时,'20部分显然是必需的,但对于您所述的需求来说并不特别相关。 (它表示记住的标记文件数。)

有关详细信息,请参见:help 'vi。可以在viminfo字符串中指定许多其他参数。例如,您可能需要增加最大寄存器大小。默认值为10kb,如果不够用,请尝试将其增加到1000kb:

set viminfo='20,<1000,s1000

3
同时,在默认限制10kb的基础上添加",s1000"以将其提高到1000kb,例如。 - Ingo Karkat
如另一个答案所述,这会导致错误:E528: 必须指定一个 '值:viminfo=<1000 - olovb
@olovbпјҢдҪ иҜҙеҫ—еҜ№пјҢзңҒз•Ҙ '20 дјҡеҜјиҮҙй”ҷиҜҜгҖӮжҲ‘еңЁиҮӘе·ұзҡ„.vimrcдёӯдҪҝз”Ёе®ғпјҢдҪҶд№ӢеүҚжІЎжңүж„ҸиҜҶеҲ°е®ғжҳҜеҝ…йңҖзҡ„пјҒ - pattivacek
参数在此处解释:https://vimhelp.org/options.txt.html#%27viminfo%27 - Thomas Guyot-Sionnest
请参见此答案及其中的评论/链接。 - Louis Maddox
非常好用。我使用了 set viminfo='20,<10000,s10000 来获取最多10K行和10MB的设置。 - WestCoastProjects

5

对我来说,这个命令:

set viminfo=<1000

抛出一个错误:

E528: Must specify a ' value: viminfo=<1000

在你的 .vimrc 文件里使用完整字符串:

set viminfo='50,<1000,s100,h
  • 第二个值 - 最大复制行数

检查您在vim中的最后一个值:

:verbose set viminfo?

0

您正在使用vim的保留寄存器能力在不同会话之间保留.viminfo文件。Patrick已经解决了该方法的限制以及如何提高默认限制。

但是,如果您需要经常在vim和其他程序之间复制/粘贴,则应尝试使用macvim,它提供了剪贴板支持。

此外,您应该阅读:help缓冲区,vim完全可以在同一会话中打开多个文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接