2014-09-19 41 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