2012-10-05 87 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事件,查看已编辑的内容(注册".),然后执行替换。