我试图将 300 行从一个文件复制到另一个文件,在源文件中我输入“300yy”,它说它已拉出 300 行。
转到目标文件并按 p,它会粘贴,但只有前 50 行。
知道为什么它不粘贴 300 吗?
要在 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 的寄存器将被跳过。h
Vim 启动时禁用搜索突出显示。正如 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-=
保持在同一个会话中(打开新文件执行 :e 路径),您将没有任何限制。
试试vim -p file1 file2
。它将每个文件打开到一个新选项卡中(这很棒),它解决了复制/粘贴限制
对我有用的是,在可视模式下,使用类似命令:1,300y
从第 1 行复制到第 300 行进行复制。您可以将其切换到您希望:37,456y
从第 37 行复制到第 456 行的任何行范围。
如果你的 vim 没有显示这些行,你可以使用命令设置这些行:set numbers
如果您想在另一个文件中使用该拉出/复制的行,我建议打开多个选项卡并在它们之间复制和粘贴信息。为此,您可以使用命令在终端中打开它们vim -p file1 file2
。要在它们之间导航,您可以使用命令gt
并gT
分别移动到下一个和上一个选项卡。