2012-10-05 160 views
0

我想在Vim中創建文檔模板。當更改佔位符時,Vim觸發所有佔位符的更新

當創建擴展名爲.bananão的文件時,模板應該自行激活併成爲當前緩衝區。

模板將包含這樣的事情:


Names of attorneys: 
- DEFATTORNEY 
- BANANATTORNEY 

Plaintiff: 
- BANANAPLAINTIFF 
Defendant: 
- BANANADEFENDANT 

... 

.. moves the court for the entry of an Order directing BANANAPLAINTIFF 
    to produce to BANANADEFENDANT ... 

... etc. 

我想爲vim要監視更改,因爲它們是本文檔模板製成,觸發一個動作在特定事件被檢測到。

我想監視的變化是:

屬於集合COCONUTSET任何關鍵字
  • 編輯:{DEFATTORNEY,BANANATTORNEY,BANANAPLAINTIFF,BANANADEFENDANT}

的觸發複合動作我想喜歡配置的是:

  • 在完成編輯COCONUTSET中單詞之一的命令後,比如COCONUT WORD,讀取放置在位置字COCONUTWORD位置的第一個單詞,並替換所有其他出現的佔位符單詞COCONUTWORD,替換爲該替換單詞。

  • 從COCONUTSET中刪除COCONUTWORD。

  • 如果COCONUTSET爲空,則停止監視更改。

你會爲此推薦哪些功能/方法?

+1

你的描述有點令人困惑,但我想你正在描述Snipmate或Ultisnips之類的片段插件。不是用於觸發機制,而是用於他們提供的佔位符。 –

+0

然後讓我編輯描述。 – Robottinosino

+0

這聽起來很像你正在做的只是一個全局搜索並替換你的'COCONUTSET'中的每個單詞......是否有任何理由需要在做實際的編輯字? – ngm

回答

0

用你愚蠢的例子,很難判斷它有多好,但是我爲我寫了一個插件,它提供了一個gc命令,它和內置的c一樣工作,在離開插入模式之後,當前行中的所有其他事件(如果字符發生小改變),或者當整行改變時,發送到緩衝區的其餘部分。我計劃儘快發佈,但基本上你只需要掛鉤InsertLeave事件,查看已編輯的內容(註冊".),然後執行替換。