我试图将300行从一个文件复制到另一个文件, 在源文件中我键入“300yy”,它说它已经猛拉了300行。
转到目标文件并按p, 它粘贴,但只有前50行。
任何想法为什么它没有粘贴300?
答案 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 file2
和 gt
分别移动到下一个和上一个选项卡。