2013-01-03 127 views
1

我想编写一个vim插件,它在编辑器中对文本执行某些文本转换,但我不希望这些转换在文件内部可见。关于缓冲区加载和缓冲区保存的触发命令

作为示例,请考虑我想编辑的文本文件中的单词Gnarly。在加载时,我希望我的vim脚本将其更改为G,但是当我保存缓冲区时,我想将其扩展回Gnarly

我的场景稍微复杂一点,因为它会涉及到一个外部脚本,但我想看看究竟是如何被调用的。

此外,我希望能够将此更改仅适用于某些基于其扩展名的文件。

回答

3

参见:h autocmd。您需要的事件是BufReadBufWrite

也许你会感兴趣:h conceal

+0

Autocmd是我所需要的。但是隐藏的文档对我来说并不十分清楚,或者它如何使用。 – mhitza

2

首先,定义您自己的文件类型,例如gnarly。阅读:help new-filetype的细节,但基本上它的这种自动命令:

:autocmd BufRead,BufNewFile *.gnarly  set filetype=gnarly 

然后对于Vim 7.3引入了隐藏特点是要走的路。编写一个语法脚本~/.vim/syntax/gnarly.vim。对于示例它将包含:

:syntax keyword gnarlyConceal Gnarly conceal cchar=G 

但你也可以使用:syntax match对于更为复杂的模式。

最后,默认情况下,隐藏功能处于关闭状态。要打开它,把下面的命令放到~/.vim/ftplugin/gnarly.vim(你可以把它变成语法文件,太多,但建议,做这种分离的,与Vim的船舶全部爆满插件):

:setlocal conceallevel=1 

您可以自定义'concealcursor'行为也是如此。如果您仍然需要帮助,请查看帮助页面或使用隐藏的现有插件。