Sublime中編寫(xiě)C/C++或Java代碼時(shí)赖欣,經(jīng)常要用到
this->
指針即寡,為此我們需要兩次鍵入,非常麻煩蛙粘。
我在使用 Qt 編寫(xiě)C++的時(shí)候發(fā)現(xiàn)了一個(gè)極為好用的功能:在對(duì)象指針后面鍵入.
號(hào)會(huì)自動(dòng)變?yōu)?code>->质况,反之按Backspace
刪除會(huì)同時(shí)刪除->
斧账。
當(dāng)然Sublime并不能判斷哪個(gè)對(duì)象是指針,但可以肯定this
變量一般是指針冠桃,這在Java
中也是一樣命贴,所以我們針對(duì)this
變量來(lái)實(shí)現(xiàn)該功能。
首先看看效果:
1. 設(shè)置新的keymap
需要注意食听,鍵入.
鍵觸發(fā)輸入->
事實(shí)上是一個(gè)快捷鍵操作胸蛛。
首先打開(kāi)用戶(hù)的sublime-keymap文件。
在Sublime中選擇菜單Preferences->Key Buildings
碳蛋,就打開(kāi)了用戶(hù)的sublime-keymap文件(一般在Packages\User\Default (Windows).sublime-keymap
)胚泌。
在keymap中增加以下2項(xiàng):
{ "keys": ["."], "command": "insert_snippet", "args": {"contents": "->"}, "context":
[
{ "key": "preceding_text", "operator": "regex_contains", "operand": "\\bthis$", "match_all": true },
{ "key": "selector", "operator": "equal", "operand": "source.c++,source.c,source.java", "match_all": true },
{ "key": "selector", "operator": "not_equal", "operand": "comment,string.quoted", "match_all": true }
]
},
{ "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Twice.sublime-macro"}, "context":
[
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "preceding_text", "operator": "regex_contains", "operand": "->", "match_all": true },
{ "key": "selector", "operator": "equal", "operand": "source.c++,source.c,source.java", "match_all": true },
{ "key": "selector", "operator": "not_equal", "operand": "comment,string.quoted", "match_all": true }
]
},
稍微解釋一下:
第一項(xiàng)的意思是:輸入
.
觸發(fā)一個(gè)命令insert_snippet
,該命令的含義是插入代碼片段肃弟,而要插入的代碼片段正是"args"
中所指定的"->"
(寫(xiě)過(guò)sublime-snippet文件的童鞋應(yīng)該很清楚了)。
但總不能任何條件下都插入這個(gè)代碼片段呀零蓉!你肯定不希望寫(xiě)markdown的時(shí)候輸入句號(hào)卻出現(xiàn)了一個(gè)->
笤受!于是乎,下面的三行指定了3個(gè)條件:
a. 你所輸入的.
號(hào)之前的文本必須是一個(gè)完整的單詞this
敌蜂;
b. 此快捷鍵只在 C箩兽,C++ 或 Java 代碼中有效;
c. 在以上三種代碼文件中也并非處處有效章喉,其中在注釋和字符串中無(wú)效(注意上面代碼中的"source.c++,source.c,source.java"
和"comment,string.quoted"
這些名稱(chēng)不是隨便寫(xiě)的汗贫,這些在Sublime中叫作scope name,使用ctrl+alt+shift+p
快捷鍵可以查看當(dāng)前代碼片段和文件的 scope name)秸脱。第二項(xiàng)的形式與第一項(xiàng)類(lèi)似落包,其含義是鍵入
Backspace
一次性刪除->
兩個(gè)字符。不再贅述摊唇。
不同的是咐蝇,此處使用的命令是run_macro_file
,使用過(guò)錄制宏功能的童鞋應(yīng)該很熟悉巷查。我們使用Delete Left Twice.sublime-macro
這個(gè)宏來(lái)實(shí)現(xiàn)連續(xù)刪除前面2格有序。由于這個(gè)宏非常簡(jiǎn)單抹腿,完全不需要錄制,兩句話就能搞定旭寿!見(jiàn)下面警绩。
2. 附加:創(chuàng)建 Delete Left Twice.sublime-macro
在你的 User 文件夾下新建文件 Delete Left Twice.sublime-macro
輸入以下內(nèi)容:
[
{"command": "left_delete"},
{"command": "left_delete"}
]
其中,left_delete
是sublime本身提供的命令接口
保存文件就大功告成了盅称。
注意:保存的位置要和上面引用的路徑對(duì)應(yīng)房蝉!