在活动的 Vim 缓冲区中,如何在不先关闭当前缓冲区的情况下将特定范围的行写入新文件?
答案1
你可以做
:100,200w filename
当然100,200是你要写的行数范围。
答案2
最一般的:
将光标移动到要写入的组的第一行。击中
m
并a
连续。这就是“设置名为‘a’的标记”。将光标移动到该组的最后一行,点击“m”和“b”。
切换到命令模式,按:按顺序执行,
:'a,'b w filename
然后按回车键。
这适用于 vi、nvi 和 vim。
另一种方法适用于更现代的 vim:
将光标放在要写出的行组的第一行上。点击
V
,表示“开始视觉行块”。将光标移动到行组的底部。 Vim 将以反白方式突出显示每一行。
写出。点击
:
进入命令行模式。这将在屏幕底部给您一个提示,如下所示::'<,'>
这意味着从视觉块的开始到结束。输入w
文件名并按回车键。
您可以根据需要将单行添加到文件末尾,方法是将光标放在要写出的行上,然后键入::.w >> filename
并按回车键。
“写入一组行”命令也适用于“>> 文件名”,而不仅仅是“文件名”。 “>>”导致 vi 或 vim 附加到文件,而不仅仅是写入它。
答案3
如果您知道要写入的行号,则可以从命令行执行此操作:
vim -c "100,200w new_file.txt" -c wq original_file.txt
答案4
一个小技巧是使用相对行号。例如:
:+0,+99w filename
将接下来的 100 行写入文件名。