23

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

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

知道为什么它不粘贴 300 吗?

4

5 回答 5

35

要在 vim 会话期间查看当前设置,请运行:

:set viminfo?

正如Vim Tips Wiki中所建议的,您可以通过运行 ex-命令来调整viminfo设置(同样,在 vim 会话期间):

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

或者您可以删除并将:其设置为默认值.vimrc

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

各个部分的含义:

  • '100将记住最后 100 个编辑文件的标记。
  • <1000将每个寄存器保存的行数限制为 1000 行;如果寄存器包含超过 1000 行,则仅保存前 1000 行。
  • s100文本超过 100 KB 的寄存器将被跳过。
  • hVim 启动时禁用搜索突出显示。
于 2010-09-09T13:23:18.927 回答
9

正如 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-=
于 2010-09-09T14:40:47.317 回答
4

保持在同一个会话中(打开新文件执行 :e 路径),您将没有任何限制。

于 2010-09-09T13:57:10.337 回答
3

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

于 2013-09-01T04:29:35.793 回答
0

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

如果你的 vim 没有显示这些行,你可以使用命令设置这些行:set numbers

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

于 2021-04-29T20:23:38.930 回答