7

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

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

4

3 回答 3

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

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

于 2012-06-02T23:56:27.790 回答
3

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

:r !sed -n -e 42p #

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

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

于 2012-06-02T23:09:41.520 回答
1

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

:vert diffsplit otherfilename

或(如果缓冲区已经打开)

:windo diffthis

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

:diffput
:diffget

以及它们的正常命令等效项 ( dp, do(_obtain)) 以从另一个缓冲区中获取和插入/替换行。

于 2012-06-03T00:56:07.933 回答