我想编写一个vim
插件,在编辑器中对文本进行某些文本转换,但我不希望这些转换在文件中可见。
例如,请考虑我要编辑的文本文件中的单词Gnarly
。在加载时,我希望我的vim脚本将其更改为G
,但是当我保存缓冲区时,我希望它扩展回Gnarly
。
我的场景有点复杂,因为它涉及一个外部脚本,但我想知道如何调用它。
此外,我希望能够将此更改仅应用于基于其扩展名的某些文件。
答案 0 :(得分:3)
请参阅:h autocmd
。您需要的活动是BufRead
和BufWrite
。
也许你会对:h conceal
感兴趣。
答案 1 :(得分:2)
首先,定义您自己的文件类型,例如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'
行为。如果您仍需要帮助,请查看帮助页面或使用隐藏的现有插件。