我想编写一个vim
插件,它在编辑器中对文本执行某些文本转换,但我不希望这些转换在文件内部可见。关于缓冲区加载和缓冲区保存的触发命令
作为示例,请考虑我想编辑的文本文件中的单词Gnarly
。在加载时,我希望我的vim脚本将其更改为G
,但是当我保存缓冲区时,我想将其扩展回Gnarly
。
我的场景稍微复杂一点,因为它会涉及到一个外部脚本,但我想看看究竟是如何被调用的。
此外,我希望能够将此更改仅适用于某些基于其扩展名的文件。
我想编写一个vim
插件,它在编辑器中对文本执行某些文本转换,但我不希望这些转换在文件内部可见。关于缓冲区加载和缓冲区保存的触发命令
作为示例,请考虑我想编辑的文本文件中的单词Gnarly
。在加载时,我希望我的vim脚本将其更改为G
,但是当我保存缓冲区时,我想将其扩展回Gnarly
。
我的场景稍微复杂一点,因为它会涉及到一个外部脚本,但我想看看究竟是如何被调用的。
此外,我希望能够将此更改仅适用于某些基于其扩展名的文件。
参见:h autocmd
。您需要的事件是BufRead
和BufWrite
。
也许你会感兴趣:h conceal
。
首先,定义您自己的文件类型,例如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'
行为也是如此。如果您仍然需要帮助,请查看帮助页面或使用隐藏的现有插件。
Autocmd是我所需要的。但是隐藏的文档对我来说并不十分清楚,或者它如何使用。 – mhitza