我想编写一个vim
插件,在编辑器中对文本进行某些文本转换,但我不希望这些转换在文件中可见。
例如,考虑Gnarly
我要编辑的文本文件中的单词。加载时,我希望我的 vim 脚本将其更改为G
,但是当我保存缓冲区时,我希望它扩展回Gnarly
.
我的场景有点复杂,因为它会涉及到一个外部脚本,但我想看看它是如何被调用的。
此外,我希望能够将此更改仅应用于基于其扩展名的某些文件。
我想编写一个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'
行为。如果您仍然需要帮助,请查看帮助页面或使用隐藏的现有插件。