Sublime Text 3 如何添加自定義關鍵詞的縮進規則?
我試圖從 Vim 轉移到 Sublime Text 3 上,但一件事阻礙了我,那就是 Sublime Text 3 默認對於 Matlab 的語法支持不夠好,例如:classdef 這樣的關鍵字,它不能識別。
我安裝了一個叫 PackageResourceViewer 的插件。用它,我能方便地找到並編輯 Matlab 的語法定義文件 Matlab.tmLanguage。通過編輯這個文件,我已經能夠實現自定義關鍵字 classdef 的:
- 高亮顯示
- 自動生成邊欄摺疊記號
但我還有第三個需求,就是讓這個關鍵字的下一行自動縮進。這個功能始終沒有實現。我注意到有一個文件叫 Indent.tmPreferences,嘗試編輯它,在裡面相應的位置(相同位置還有 function/if/for/while 等),添加上 classdef 關鍵字,但是不起作用。
請問:如何才能自定義一個關鍵字的縮進規則呢?(如果你不熟悉 Matlab,完全可以使用其他語言來回答)
編輯:添加了 Matlab 標籤。Matlab 用戶或許可以提供更完整的語法支持文件,省下我自己搞了。
回答自己的問題……
在 Sublime Text 3 中,語法定義文件被打包放在 &
為了方便修改這些資源,推薦安裝 PackageResourceViewer 這個插件。安裝好插件後,按 Ctrl+Shift+p,輸入 Open Resouce,然後輸入 Matlab,回車;再輸入 Indent,回車;再輸入 Matlab,回車。這樣,你就打開了兩個新文件,分別叫:Indent.tmPreferences 和 Matlab.tmLanguage.
在 Indent.tmPreferences 的第 40 行,新增一行,添加內容:
|classdef|properties|methods|events|enumeration|parfor|spmd
保存。
在 Matlab.tmLanguage 文件的第 11 行和第 614 行,在以 | 分隔的關鍵詞列表末尾添加同樣的內容,保存。
至此,你的 Sublime Text 3 應該能夠正確支持以上關鍵字了。
有時候,可能以上修改沒有生效。你需要清除緩存。緩存路徑如下:
Windows
%LOCALAPPDATA%Sublime Text 3Cache
Linux
~/.config/sublime-text-3/Cache
OS X
~/Library/Application Support/Sublime Text 3/Cache
BONUS
Matlab 語法定義中還有個小 bug,就是大於等於(&>=)和小於等於(&<=)中的等號不能高亮。要解決這個問題,只需要修改 Matlab.tmLanguage 文件中第 1064 行,把 >= 和 > 的順序互換。同理的還有 <= 和 < 。
忍不住想給自己點個贊!
給後來者留個方法,在sublime中添加QT關鍵詞的方法。
答案參見王備為了方便修改這些資源,推薦安裝 PackageResourceViewer 這個插件。安裝好插件後,按 Ctrl+Shift+p,輸入 Open Resouce,然後輸入 c++搜索這兩個文件,一個一個搜。1C++.sublime-syntax打開了此文件時,使用ctrl+f 搜索"private",再搜到的位置後追加「|signals|slots」 追加後的結果是public|private|protected|變為public|private|protected|signals|slots。
ctrl+s保存2按 Ctrl+Shift+p,輸入 Open Resouce,然後輸入 c++,搜索Indentation Rules.tmPreferences文件打開了此文件時,使用ctrl+f 搜索"private",再搜到的位置後追加「|signals|slots」 追加後的結果是public|private|protected|變為public|private|protected|signals|slots。ctrl+s保存:flagTest隨便打開一個文件Ctrl+Shift+p 輸入c++ 選擇set syntex:c++
寫個類class woshiyigelei
{ public: private:signals:slots:}看看是不是成功縮進了。
如果沒有縮進,打開我的電腦,在地址欄輸入%LOCALAPPDATA%Sublime Text 3Cache打開這個文件夾後全選,刪除所有文件。重新打開sublime text。 goto flagTest剛好在學matlab ,感覺很多函數在sublime下都沒有提示和高亮,在Matlab.tmLanguage里加上後確實可以高亮,但顏色是在哪裡設置的?還有代碼提示,自動補全什麼的
不懂Matlab,試試自定義Snippet。
推薦閱讀:
※想從 Notepad++ 轉移到 Sublime Text 2,發現入門有點難,有什麼建議?
※如何高效地使用 Sublime Text?
※sublime text3有沒有自動保存文件的插件?
※sublime text 3 插件推薦?
※sublime text2如何讓編寫html時有自動提示?
TAG:MATLAB | SublimeText | SublimeText3 |