我想写一个vim
插件,在编辑器中对文本进行某些文本转换,但我不希望这些转换在文件中可见。
作为一个例子,考虑我要编辑的文本文件中的单词Gnarly
。加载后,我希望我的vim脚本更改为G
,但当我保存缓冲区时,我希望它扩展回Gnarly
。
我的场景稍微复杂一点,因为它将涉及一个外部脚本,但我想确切地看到它将如何被调用。
参见:h autocmd
。您需要的事件是BufRead
和BufWrite
。
也许你会对: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'
行为。如果您仍然需要帮助,请查看帮助页面或使用隐藏的现有插件。