从不是活动缓冲区的缓冲区中删除行

时间:2012-06-02 22:07:09

标签: vim

假设有两个已加载的缓冲区/文件,它们都是通过拆分窗口显示的,行号已启用且因此已知。

有没有办法留在一个缓冲区中,指定另一个缓冲区的一行并将其拉出以便将其放入活动缓冲区?

3 个答案:

答案 0 :(得分:6)

:let @0 = join(getbufline('#', 42), "\n") . "\n"

(将#替换为另一个缓冲区的名称,将42替换为另一个缓冲区中的行号。)

答案 1 :(得分:3)

如果两个缓冲区都已保存到磁盘,并且您的系统上有 sed ,则可以使用此功能。

:r !sed -n -e 42p #

将42替换为要从备用缓冲区复制的行。

此命令将:read来自!sed sed 程序)的输出,该输出仅被指示为(-n)打印{{1}来自“其他”p文件的行42。内容将插入当前行(#)缓冲区中的当前行下方。

答案 2 :(得分:1)

你正在比较/编辑类似的文件吗?也许

:vert diffsplit otherfilename

或(如果已经打开了bufferes)

:windo diffthis

会合理的。在diffmode中,有命令

:diffput
:diffget

和它们的正常命令等价物( d p d o (_obtain))来抓取和插入/替换其他缓冲区中的行。