1

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

例如,考虑Gnarly我要编辑的文本文件中的单词。加载时,我希望我的 vim 脚本将其更改为G,但是当我保存缓冲区时,我希望它扩展回Gnarly.

我的场景有点复杂,因为它会涉及到一个外部脚本,但我想看看它是如何被调用的。

此外,我希望能够将此更改仅应用于基于其扩展名的某些文件。

4

2 回答 2

3

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

也许你会对:h conceal.

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

于 2013-01-05T12:03:17.233 回答