Sublime深度定制:鍵入 this. 自動(dòng)變?yōu)橹羔樞问?this->

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 }
    ]
},

稍微解釋一下:

  1. 第一項(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)秸脱。

  2. 第二項(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)房蝉!

相關(guān)話題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市微渠,隨后出現(xiàn)的幾起案子搭幻,更是在濱河造成了極大的恐慌,老刑警劉巖逞盆,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檀蹋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡云芦,警方通過(guò)查閱死者的電腦和手機(jī)俯逾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)舅逸,“玉大人桌肴,你說(shuō)我怎么就攤上這事×鹄” “怎么了坠七?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)旗笔。 經(jīng)常有香客問(wèn)我彪置,道長(zhǎng),這世上最難降的妖魔是什么蝇恶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任拳魁,我火速辦了婚禮,結(jié)果婚禮上撮弧,老公的妹妹穿的比我還像新娘潘懊。我一直安慰自己,他們只是感情好贿衍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布授舟。 她就那樣靜靜地躺著,像睡著了一般舌厨。 火紅的嫁衣襯著肌膚如雪岂却。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,021評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音躏哩,去河邊找鬼署浩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扫尺,可吹牛的內(nèi)容都是我干的筋栋。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼正驻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼弊攘!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起姑曙,我...
    開(kāi)封第一講書(shū)人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤襟交,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后伤靠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捣域,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年宴合,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了焕梅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卦洽,死狀恐怖贞言,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阀蒂,我是刑警寧澤该窗,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站脂新,受9級(jí)特大地震影響挪捕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜争便,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望断医。 院中可真熱鬧滞乙,春花似錦、人聲如沸鉴嗤。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)醉锅。三九已至兔簇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背垄琐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工边酒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狸窘。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓墩朦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親翻擒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子氓涣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容