vi[m] 从另一个文件读取行范围

erc*_*rch 10 linux vim copy-paste

在 Linux 上,file_B在 vim 中编辑我想从file_A. 示例:有一整套 HTML 文档具有完全相同的标题,是的,可以创建一个模板并从那里开始,但仍然:

我正在寻找一种简单 [且优雅] 的方法来从一个文件中插入一系列行并将其添加到我当前正在编辑的文件中。在vim中。

到目前为止我找到的解决方案,但并不是我正在寻找的,是

  • file_B命令:read file_A中将*整个文件_A* 添加到文件_B 中。太多了
  • vim 中有复制和粘贴功能——但必须打开这个 file_A
  • file_A 内 :10,25w! file_B将“发送”给定的行范围到file_B.
    这似乎非常接近复制和粘贴
  • 可以在 vim 中打开多个窗口
    但是当我在 8 英寸屏幕上工作时,多个窗口使方向变得困难

由于我无法找到一个舒适的解决方案,我想知道我是否只是误解了某些东西,或者我迄今为止发现的方法是常用的并被视为标准方法。

Ber*_*ard 13

我能想出的最佳解决方案是从外部调用sed并将其与:read !

:r !sed -n -e '10,25p' fileB
Run Code Online (Sandbox Code Playgroud)

  • 哎呀,对不起。忘记了 vim 对 ! 的扩展。应该是`:r!sed 10,25\!d`。请注意,您不需要`-e` 或引号,因此您也可以将其缩写为`:r!sed -n 10,25p`。`:r sed '10,$\!d;25q'` 以避免读取整个文件。 (3认同)