触发缓冲区加载和缓冲区保存命令



我想写一个vim插件,在编辑器中对文本进行某些文本转换,但我不希望这些转换在文件中可见。

作为一个例子,考虑我要编辑的文本文件中的单词Gnarly。加载后,我希望我的vim脚本更改为G,但当我保存缓冲区时,我希望它扩展回Gnarly

我的场景稍微复杂一点,因为它将涉及一个外部脚本,但我想确切地看到它将如何被调用。

我还希望能够根据扩展名只对某些文件应用此更改。

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

也许你会对:h conceal感兴趣。

首先,定义自己的文件类型,例如gnarly。阅读:help new-filetype了解详细信息,但基本上是这个autocmd:

: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'行为。如果您仍然需要帮助,请查看帮助页面或使用隐藏的现有插件。

相关内容

  • 没有找到相关文章