vim限制行内存

时间:2010-09-09 13:15:39

标签: vim lines pasting

我试图将300行从一个文件复制到另一个文件, 在源文件中我键入“300yy”,它说它已经猛拉了300行。

转到目标文件并按p, 它粘贴,但只有前50行。

任何想法为什么它没有粘贴300?

5 个答案:

答案 0 :(得分:20)

根据Vim Tips Wiki的建议,您可以调整viminfo设置:

:set viminfo?
:set viminfo='100,<1000,s100,h

各个位的含义:

  • '100将记住最近100个已编辑文件的标记。
  • <1000将每个寄存器的保存行数限制为1000行;如果寄存器包含超过1000行,则只保存前1000行。
  • s100会跳过超过100 KB文本的注册。
  • h在Vim启动时禁用搜索突出显示。

答案 1 :(得分:8)

正如Eugene和Zyx所说,调整你的viminfo将是最简单的解决方案

:set viminfo-=<50,s10

另一种解决方案是使用:read和/或:write

从file-name.txt读入当前缓冲区

:read file-name.txt

将第1行的范围从当前缓冲区附加到第300行到file-to-append.txt

:1,300write >> file-to-append.txt

您也可以使用标记代替行号,例如视觉标记

:'<,'>write >> file-to-append.txt

当然,追加可能无法满足您的viminfo更改可能效果最佳的用例。

:help :write
:help :read
:help 'viminfo'
:help :set-=

答案 2 :(得分:4)

保持同一个会话(打开新文件:e路径),你没有任何限制。

答案 3 :(得分:3)

尝试vim -p file1 file2。它将每个文件打开到一个新选项卡(这很棒),它解决了复制/粘贴限制

答案 4 :(得分:0)

对我有用的是,在可视模式下,使用 :1,300y 之类的命令进行复制,从第 1 行复制到第 300 行。您可以将其切换到您想要的任何行范围,如 {{1 }} 从第 37 行复制到第 456 行。

如果您的 vim 没有显示行,您可以使用命令 :37,456y

设置行

如果您想在另一个文件中使用那些被拉出/复制的行,我建议您打开多个选项卡并在它们之间复制和粘贴信息。 为此,您可以在终端中使用命令 :set numbers 打开它们。 要在它们之间导航,您可以使用命令 vim -p file1 file2gt 分别移动到下一个和上一个选项卡。