我想編寫一個vim
插件,它在編輯器中對文本執行某些文本轉換,但我不希望這些轉換在文件內部可見。關於緩衝區加載和緩衝區保存的觸發命令
作爲示例,請考慮我想編輯的文本文件中的單詞Gnarly
。在加載時,我希望我的vim腳本將其更改爲G
,但是當我保存緩衝區時,我想將其擴展回Gnarly
。
我的場景稍微複雜一點,因爲它會涉及到一個外部腳本,但我想看看究竟是如何被調用的。
此外,我希望能夠將此更改僅適用於某些基於其擴展名的文件。
我想編寫一個vim
插件,它在編輯器中對文本執行某些文本轉換,但我不希望這些轉換在文件內部可見。關於緩衝區加載和緩衝區保存的觸發命令
作爲示例,請考慮我想編輯的文本文件中的單詞Gnarly
。在加載時,我希望我的vim腳本將其更改爲G
,但是當我保存緩衝區時,我想將其擴展回Gnarly
。
我的場景稍微複雜一點,因爲它會涉及到一個外部腳本,但我想看看究竟是如何被調用的。
此外,我希望能夠將此更改僅適用於某些基於其擴展名的文件。
參見:h autocmd
。您需要的事件是BufRead
和BufWrite
。
也許你會感興趣:h conceal
。
首先,定義您自己的文件類型,例如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'
行爲也是如此。如果您仍然需要幫助,請查看幫助頁面或使用隱藏的現有插件。
Autocmd是我所需要的。但是隱藏的文檔對我來說並不十分清楚,或者它如何使用。 – mhitza