2014-09-19 79 views
0

我正在使用音乐符号软件lilypond。它能够将 编译成自己的文本式记法标记语言,以各种格式,其中 其中png文件。vim过滤器,管道通过多个命令

附带lilypond另一个命令是它的同伴 lilypond-book,这将编译包含<lilypond>标签, 任何文件,并把在那个地方的代码片段像这样的:

<p> 
    <a href="10/lily-9f8f7b5d.ly"> 
    <img align="middle" border="0" src="10/lily-9f8f7b5d.png" 
    alt="[image of music]"> 
    </a> 
</p> 

所以我的愿望,作为一个的VIM巨大的风扇是使用它的过滤功能和 自动化这样的工作,因此,例如,当我在文档中这样 之一:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>html-with-notation</title> 
    </head> 
    <body> 
     This is some text, before including lilypond notation file 

     And here is the melody: 
     <lilypondfile>andantino.ly</lilypondfile>/* <-- TAG THAT WILL BE RECOGNIZED BY LILYPOND-BOOK */ 

     Enjoy! 

    </body> 
</html> 

..我想替换那个<lilypond>标签,其中生成的输出 从lilypond-book命令。但事情并非如此简单,因为lilypond-book 不会写入stdout,而是写入名为stdin.html的文件。 (命名它的 像自动识别出输入从正在添加有)

所以当运行此:

:.!lilypond-book -f html - 2>/dev/null 
     // (with errors redirected to `/dev/null` to prevent polluting my buffer with messages being output.) 

我不回来没有,这当然是意料之中的,因为所有的的输出已经到了一个文件。

我怎么会现在读回所有处理后stdin.html文件是从lilypond-book部分做 ,成当前行,我就在我的vim 缓冲区?当然,所有这一切都不需要手动执行:r stdin.html

而且作为奖金,它会读取stdin.html到缓冲区之前是可能的,过程它pandoc将其转换成首先markdown,在情况下,当我在markdown文件的工作?

回答

1

可以说

+0

我从来没有想过这样做的;)是否有可能在那之后追加正常模式下的命令,以正确地缩进新插入的代码? – branquito 2014-09-19 22:30:36

+0

在这一点上,我可能会为整个过程写一个vimscript函数 – ohlec 2014-09-19 22:56:12