vim将代码块移动到另一个文件 - 仅附加

时间:2015-12-26 20:43:01

标签: vim

使用vim将代码块从您正在编辑的文件移动到另一个文件。

是否有任何提高效率的技巧?

这个问题接近下面的网址,但不完全相同

How can I extract a predetermined range of lines from a text file on Unix?

# tasks
identity lines range in file_A where you are working
append the code block to file_B
remove the code block from file_A

我以前的例行程序 - 4个步骤

# write down line range, exit vim
sed -n 1,33p file.pl >> lib/module.pm
vim lib/module.pm - to check
vim file.pl again to delete the code block

4 个答案:

答案 0 :(得分:6)

如果不必打开目标文件 ,您可以这样做:

  • 使用 Shift-V +移动命令
  • 选择行
  • 执行以下命令:

    :w >>file_B
    

    通过激活选择,它将实际显示并执行:

    :'<,'>w >>file_B
    
  • 然后只需输入gvd(或d'])即可删除之前选择的文字。

  • 要避免在文件不存在时出错,请在写入命令中添加一个!

    :'<,'>w! >>file_B
    

答案 1 :(得分:2)

尝试以下方法:

  • 导航至您要复制的第一行
  • 进入可视模式:
      

    移+ V

  • 导航到您要剪切的最后一行(第一行和最后一行之间的行被明显标记)
  • 删除选定的行并将其保存到缓冲区
      

    d

  • 使用您希望附加代码的文件打开一个新标签:
      

    :tabnew / my / new / file

  • 导航到结尾:
      

    :$

  • 粘贴以前删除的块:
      

    P

  • 保存两个文件:
      

    :WA

使用以下标签浏览:tabnext和:tabprevious,然后关闭单个标签:q。

除了使用:wa之外,您还可以使用:wqa来编写所有内容并立即退出。

答案 2 :(得分:1)

我会做的:

打开两个文件(shell):

$ vim -O2 file1 file2

删除并阻止阻止

:l1,l2d  

其中l1和l2是您要删除的行范围

切换窗口

<C-w>l

正常

将bloc粘贴到文件末尾

Gp

答案 3 :(得分:1)

作为另一种解决方案,您可以选择文本(shift v),将文本移动到剪贴板寄存器("+x),然后切换到新文件并粘贴它("+p

这具有跨vim实例工作的额外优势(如果你出于某种原因这样做)。