2013-01-03 123 views
1

我想編寫一個vim插件,它在編輯器中對文本執行某些文本轉換,但我不希望這些轉換在文件內部可見。關於緩衝區加載和緩衝區保存的觸發命令

作爲示例,請考慮我想編輯的文本文件中的單詞Gnarly。在加載時,我希望我的vim腳本將其更改爲G,但是當我保存緩衝區時,我想將其擴展回Gnarly

我的場景稍微複雜一點,因爲它會涉及到一個外部腳本,但我想看看究竟是如何被調用的。

此外,我希望能夠將此更改僅適用於某些基於其擴展名的文件。

回答

3

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

也許你會感興趣:h conceal

+0

Autocmd是我所需要的。但是隱藏的文檔對我來說並不十分清楚,或者它如何使用。 – mhitza

2

首先,定義您自己的文件類型,例如gnarly。閱讀:help new-filetype的細節,但基本上它的這種自動命令:

: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'行爲也是如此。如果您仍然需要幫助,請查看幫助頁面或使用隱藏的現有插件。