如何在vim中打开一个新文件,但不是同一个文件

时间:2012-07-18 20:02:27

标签: vim

例如,如何打开我将用作文件模板的文件,但是可以将其打开为未保存的缓冲区?我不知道我应该使用哪种方法,但我希望能够将它保存在它应该是的文件之后。

我的情况是一个jekyll博客,我有一个基本的帖子模板,并希望从命令行在vim中打开,所以我可以开始帖子,然后:w *filename.md*

3 个答案:

答案 0 :(得分:3)

使用saveas命令。假设您有一个名为template.md的帖子的模板,请打开template.md,进行一些修改,然后执行:w而不是:sav newPost.md

无需切换缓冲区:现在您的缓冲区将包含文件newPost.mdtemplate.md将在文件系统上保持不变。

答案 1 :(得分:3)

一种方法是使用:read命令或:r。例如:r template.mdtemplate.md的内容读入当前缓冲区。

优点:

  • 可以阅读多个模板
  • 可以使用任何缓冲区,包括未保存的缓冲区,甚至是临时缓冲区
  • 不必担心在事故中保存template.md文件
  • 可以与:!方法结合使用,以读取shell命令的输出。例如:r!ls
  • 使用:r的范围读取缓冲区中特定点的模板。例如:10r template.md将在第10行后的template.md中读取。

缺点:

  • 可能有一个额外的空白行。这可以通过:0d_或任何您喜欢的删除行的方法轻松删除。

示例工作流程:

  1. 创建缓冲区并读入模板

    :new
    :r template.md|0d_
    
  2. 编辑缓冲区

  3. 保存缓冲区

    :w a-great-new-file.md
    
  4. 如需更多帮助,请参阅:

    :h :r
    :h :r!
    :h :range
    

答案 2 :(得分:2)

$ vim template.md
(edit)
:saveas filename.md

$ cp template.md filename.md && vim filename.md

或......我不确定我理解你的问题。

正常的工作流程是打开模板并“另存为...”。在Vim和其他所有编辑。这有什么问题?

或者您正在寻找templatingsnippet-expansion插件?