vi/vim,如何将多行写出到一个新文件中

Mic*_*ant 39 vim editors vi files

在活动的 Vim 缓冲区中,如何在不先关闭当前缓冲区的情况下将特定范围的行写入新文件?

Ber*_*ard 57

你可以做

:100,200w filename
Run Code Online (Sandbox Code Playgroud)

当然 100,200 是您要写入的行的范围。

  • 包括的。如果您使用模式,也包括在内::/^something/,/^else/ w 文件名,或标记:'a,'bw 文件名包括标记为 'a' 和 'b' 的行。 (4认同)

Bru*_*ger 27

最一般的:

  1. 将光标移动到要写入的组的第一行。命中ma顺序。那是“设置名为'a'的标记”。

  2. 将光标移动到组的最后一行,点击“m”和“b”。

  3. 切换到命令模式命中:按顺序执行:'a,'b w filename然后按返回。

这将适用于 vi、nvi 和 vim。

另一种方法,适用于更现代的 vim:

  1. 将光标放在要写出的行组的第一行。点击V,用于“开始视觉线条块”。

  2. 将光标移动到行组的底部。Vim 将用反向视频高亮显示每一行。

  3. 写出。点击:进入命令行模式。这将在屏幕底部给你一个提示,看起来像::'<,'> 这意味着从视觉块的开始到结束。键入w和文件名并按回车键。

您可以根据需要在文件末尾添加单行,方法是将光标放在要写出的行上,然后键入::.w >> filename并按回车键。

“写一组行”命令也适用于“>>文件名”,而不仅仅是“文件名”。">>" 使 vi 或 vim 附加到文件中,而不是仅仅写入文件。


nof*_*fle 8

要添加到 Bernhard 的答案中,您还可以使用视觉模式选择一个区域,然后输入:w filename.


Aka*_*all 8

如果您知道要写入的行号,则可以从命令行执行此操作:

vim -c "100,200w new_file.txt" -c wq original_file.txt
Run Code Online (Sandbox Code Playgroud)