将文件从 vim 中的缓冲区“a”复制到新的 txt 文件

将文件从 vim 中的缓冲区“a”复制到新的 txt 文件

有人能帮我用命令将数据从缓冲区“a”复制到新的 .txt 文件中吗?我已经通过命令 ( "a30yy) 将 30 行从 Vi 复制到缓冲区“a”中,但我不知道如何将这些数据复制到新的 .txt 文件中。

答案1

复制行后("a30yy),打开新文件(:e some-file- 在当前拆分/窗口中打开,:tabe some-file- 在新选项卡中打开,:vs some-file- 在新垂直拆分/窗口中打开等),导航到要粘贴的位置,然后执行"ap(或者"aP如果您想在光标前粘贴)。


从技术上讲,a这是登记册, 不是缓冲区。寄存器是存储复制(复制)或剪切(删除)文本的地方。Vim 中的缓冲区是代表文件的实体。因此,当您在 Vim 中打开文件时,会创建一个代表该文件的新缓冲区。缓冲区显示在窗户(又称分裂),以及标签包含窗口的排列。同一个缓冲区可以显示在多个窗口中。请参阅这篇 Vi 和 Vim 文章

答案2

如果你的目标是将文件 a 中的某些连续行保存到新文件 b 中,那么你可以使用视觉选择写入新文件

:'<,'>w new.txt

但如果你的目标是将寄存器内容转储到文件按照 muru 在链接帖子上的建议,使用以下命令:

:call writefile(getreg('a', 1, 1), "new_filename.txt")

如果你想使它更短,你可以在~/.vimrc(调用它Wrf进行写入寄存器到文件)中定义你自己的函数

function Wrf(regname,fname)
    call writefile(getreg(a:regname,1,1),a:fname)
endfunction

现在您只需在 vim 中执行以下操作即可:

:call Wrf('a','new_textfile.txt')

相关内容