趙亮-碧海情天 imzl # live.com網絡
接觸ST好一陣子,一直只是通常性地使用,和有時對菜單的CAPTION進行漢化。但隨着安裝的插件增多,有的下拉菜單已經太長了,勢必須要對菜單進行重組了。按照菜單默認的內容進行觀察,不難明白重組的方式。網站
在重組過程當中,突然想到,平時使用時好像有一些不太方便的地方,好比「編輯」菜單裏面項目不少,並且那麼多項目還都有子菜單,不少還都沒有鍵盤加速鍵,只能依靠鼠標訪問,效率較差。還有一些感受不太合適的地方,好比「編輯」菜單中的「軟換行」並無改變文檔的實際內容,只是改變一下顯示方式,按意義來說應該放在「視圖」菜單裏纔對。.net
因而打定主意要對默認菜單進行大手術。這時就發現有些疑惑等待解決了,因而在網上查找,卻都沒有比較詳盡的說明,在ST官方網站列出的官方和非官方的文檔裏面也都沒有介紹——這方面的內容是空白頁。插件
通過本身的一些摸索嘗試,終於基本弄清了菜單文件的全部含義。修改的結果能夠查看我這兩篇文章裏的介紹和圖片:對象
(附圖)Sublime Text 3056 趙亮(碧海情天)漢化定製(雙12)版 http://my.oschina.net/theforever/blog/185251blog
(附圖)Sublime Text 3059 漢化加強版(趙亮-碧海情天) http://my.oschina.net/theforever/blog/186730教程
經過查看我修改的內容,你能知道我怎麼作的,其中最重要的就是我加在菜單文件裏的第一個菜單項目。它看起來像是個關於漢化者的廣告,事實上,它是一個徹底鮮明的自定義菜單項,後面全部項目你均可以沒必要看了,光看它就能明白菜單文件的格式用法。若是你對此有興趣,而且下載查看了個人勞動成果,那麼就應該獲得我爲你準備的這份禮物,快速悟透ST的菜單文件用法。圖片
若是你尚未下載我發佈的軟件包,那麼我大體在這裏講一下關鍵點。並不是是保留,而是有些東西須要參考實物去實踐領悟,用語言講,說的人累,聽的人還不必定能聽明白。開發
一個{}是一個JSON對象,同時也是一個菜單對象。空的{}會產生一個沒有顯示文字也不能執行的空菜單,但它畢竟也是一個不會被報錯的菜單。因此,「沒有什麼救世主」,沒有哪一個菜單屬性是不可或缺的。文檔
id 並不是ST系統固定設置的,好比"id":"file",並不是是系統中本來有個叫做file的對象等候你用一樣的id去指定對它進行設置。id只是給你目前這個菜單起個標識名稱,而後供其它在你這個菜單後面加載的菜單文件經過這個id名稱進行查找並用新屬性覆蓋,也即重載。當你要根據系統默認的菜單ID或者已知的他人的菜單ID去添加本身菜單的時候,你要依靠它們的ID去尋找該對象,而後在其children屬性中添加本身的菜單。這時你要查看它們的ID設置並保持本身使用的與其一致,但當這些均可以被你更改時,你能夠任意更改ID,只要一致便可,因此ID並不像「神仙皇帝」同樣不可侵犯。而當你不考慮後人或者的確無需考慮的時候,對於本身增長的菜單也徹底能夠不加id屬性。固然,若是後人用到你的成果時,他若真須要,也能夠本身再在你的基礎上修改,添加也好,怎樣也罷,反正不用你操心了。除非你想給本身後備使用。好比我在菜單文件裏創建的第一個菜單就是一個只有ID=ZL(一看就知道是自定義名稱)的菜單,在其它菜單文件裏才根據這個ID對其進行設置。
當有多個相同ID的菜單時會怎樣? 當在其它菜單文件中對這些相同ID的菜單進行重載時又會怎樣? 雖然說通常不會故意這樣用,但這些你也均可以本身嘗試一下,會更好地創建你的知識觀。
雖然說菜單能夠什麼屬性都不加,但要想讓菜單可以執行某個行爲指令,就必須指定 command 屬性了,其值必須是ST內部指令和全部插件的PY程序中的以sublime_plugin.TextCommand或sublime_plugin.WindowCommand做參數的類的名稱,而且寫法有分別,在PY中使用駝峯式寫法,如ZhaoLiang,而在菜單和 sublime-commands 文件裏的command屬性值要寫成毛毛蟲式,如zhao_liang。查看全部PY腳本有點麻煩,一個簡單方法就是查看Default和其它插件包裏的 Default.sublime-commands 文件裏註冊的命令。ST插件雖不硬性要求,但提倡把腳本中的命令都在 sublime-commands 文件中註冊,一是方便用戶來查找你增長的命令,二是可讓用戶使用CTRL+SHIFT+P的組合鍵調出「命令面板」,在裏面快速檢索你註冊的命令進行調用。
咱們修改菜單文件最常作的就是修改某項菜單的 caption 屬性值了。它是菜單的顯示文字,能夠說內容是隨便你設置的,即便是設置成和其它菜單相同的,只要你看着能接受,系統確定不會不一樣意。固然,咱們修改它不是爲了添亂,而是改爲咱們但願的樣子。隨着安裝插件的增多,若是你不只追求視覺上的和諧,還但願菜單的鍵盤訪問鍵可以互不干擾的工做(好比同一組菜單的鍵盤訪問鍵都不相同。若是相同,就會先在相同的菜單間切換了,效率上會差些),就須要常常根據狀況來修改 caption 了。這對於大多用戶來講,都是需求最多的事情。
菜單不只是鼠標操做的,也是能夠用鍵盤操做的。事實上,用鍵盤操做要更快。而用鍵盤操做菜單,比用鍵盤組合快捷鍵(在sublime-keymap文件裏定義)去執行命令更容易分類和記憶。好比先按CTRL+K,再按CTRL+別的鍵 的組合鍵命令有好幾個,它們分屬不一樣的主菜單,也就是說,CTRL+K 開頭的命令橫跨幾個主菜單,包括幾種不一樣性質的內容。這樣很難記憶,或者說,記憶成本較高。但若是你先用ALT+主菜單的鍵盤訪問鍵,再按個A或W(你設置的下拉菜單項的鍵盤加速鍵),就能夠執行對應的菜單,這個速度比按兩次組合鍵還要快,而你很容易分清類別,容易記憶。因此應該重視菜單的鍵盤訪問鍵,讓菜單不只能點,還要能按,並習慣用鍵盤訪問菜單。設置菜單的鍵盤訪問字母,就要用到 mnemonic 屬性。這個屬性的值只能是一個字母,並且這個字母必須在caption裏有出現,不然是無效的。若是沒加這個屬性,默認是用 caption 的開頭字母做爲鍵盤訪問鍵。當開頭字母有相同的時候,爲避免衝突,能夠選擇開頭字母后面任意一個字母做爲 mnemonic 屬性的值。
對ST菜單文件的靈活使用是頗有必要的。有些菜單項目的安排可能不合理(至少對你的來講可能不理想),咱們不只能夠把它從一個主菜單挪到另外一個主菜單中,也能夠把它做爲主菜單使用(當它含有子菜單時)。即便它並不含有子菜單,而是一個獨立的命令菜單,就象我給菜單文件添加的第一個菜單項,也是能夠放在主菜單級別,而後鼠標點擊執行指令的。
具體的靈活運用就要靠你開動腦筋,讓思想衝破牢籠了。
args 屬性能夠給command屬性指定的命令輸送參數。經過這種配合,能夠實現較強大的插件。從菜單修改的角度來說,提供不一樣的合適的 args 能夠輕鬆創鍵多個類似而不一樣的菜單,好比「打開菜單文件」、「打開命令文件」、「打開配置文件」。等你能把這個屬性玩透徹了,整個菜單文件也就快搞明白了。
好,看完我這些介紹,趕快本身行動實踐一下吧,趁熱打鐵效果纔好啊。
Sublime Text 3 插件的漢化、開發、發佈方法教程 http://my.oschina.net/theforever/blog/136554
本文及內容均屬原創,遵循《知識共享 署名-非商業性使用-禁止演繹 2.5 中國大陸協議》進行發佈,您能夠自由: 複製、發行、展覽、表演、放映、廣播或經過信息網絡傳播本做品。唯須遵照下列條件:
署名 — 您必須按照做者或者許可人指定的方式對做品進行署名。
非商業性使用 — 您不得將本做品用於商業目的。
禁止演繹 — 您不得修改、轉換或者以本做品爲基礎進行創做。