我有興趣編寫自定義的語法定義,我會從一開始。 Vim在哪裏放置語法定義?我在哪裏可以找到vim對語言理解的定義,比如Ruby?
我推測有一個文件帶有一些正則表達式,這些正則表達式與我在語法着色文件中定義的符號有關,例如, vimCommentString
,vimCommand
,vimCmdSep
我有興趣編寫自定義的語法定義,我會從一開始。 Vim在哪裏放置語法定義?我在哪裏可以找到vim對語言理解的定義,比如Ruby?
我推測有一個文件帶有一些正則表達式,這些正則表達式與我在語法着色文件中定義的符號有關,例如, vimCommentString
,vimCommand
,vimCmdSep
在您的$VIMRUNTIME
文件夾中搜索名爲ruby.vim
的文件。在我的情況下,結果在以下文件中:
/usr/share/vim/vim73/compiler/ruby.vim
/usr/share/vim/vim73/ftplugin/ruby.vim
/usr/share/vim/vim73/indent/ruby.vim
/usr/share/vim/vim73/syntax/ruby.vim
最後一個很可能是你要找的。
將您自己的自定義語法定義放在現有的(希望類似的)上是一個好主意;但是,請注意,您也可能無意中將錯誤和舊的行李複製到其中。 Vim的語法高亮功能很強大,因此很複雜,但是有很好的文檔,從:help usr_44.txt
開始。
Vim的文檔非常好。這裏有一個選擇讓你開始。
:help usr_44.txt
。syntax-loading
幫助。filetype
幫助文件。new-filetype
。'runtimepath'
加載文件的位置。請注意,語法定義和突出顯示之間存在分離。但是,您可以看到突出顯示是在verbose
命令的幫助下定義的。其中:hi vimCommentString
會告訴你什麼vimCommentString
高亮顯示爲,:verbose hi vimCommentString
也會顯示你其中vimCommentString
高亮被定義。 (:verbose
是非常方便的事情像set
,以及如果你已經有了一個行爲異常的腳本設置你不想要的選項。)
對於':let'':verbose'是完全沒用:vim不記錄變量的定義。 – ZyX
對不起,你是對的。但至少它對'set'有效。想不到爲什麼我會受到這種印象...... –
@ChrisMorgan定義語法的正則表達式並不是你解釋的地方。我錯誤地認爲像'vimCommentString'這樣的符號會涉及**語法定義**。不過,你的回答非常有趣,並可能有助於其他項目。謝謝。 –
是那樣的瘋狂我一直在尋找〜 –