2016-04-26 36 views
0

我發現一個偉大的鍵綁定,跳過崇高代碼compeletion通過點擊進入這裏的鏈接:quora。我在我的鍵盤映射文件中的代碼是:如何使鍵綁定,將跳過代碼完成崇高,除非它是{}或[]

// BEGIN keymaps for skipping to the end of ") and ] code compeletion 
{ "keys": ["enter"], "command": "move", "args": {"by": "characters", "forward": true}, "context": 
    [ 
     { "key": "following_text", "operator": "regex_contains", "operand": "^[)'\"\\]]", "match_all": true }, 
     { "key": "auto_complete_visible", "operator": "equal", "operand": false } 
    ] 
}, 
// END keymaps for skipping to the end of ") and ] code compeletion 

它明確地工作,我希望......大部分時間。例如,如果我打字在一些javascript:

function(p1, p2|)| 
hitting enter..^.^ 

,我按下回車鍵,當光標在第一胡蘿蔔,然後將跳轉到第二胡蘿蔔這是我想要的。但是,還有另外一種情況,就是當你打開時,在崇高的設置文件中說方括號。

[|]| 
.^.^ 

因爲鍵盤映射光標躍過右括號,當在現實中你想要的是插入像一個新的行現在:

[| 
.^ 
    | 
....^ 
] 

,並從第一移動胡蘿蔔第二胡蘿蔔,就像當你創建一個JavaScript函數,這種情況發生的行爲:

function myFunction(){| 
    | <-- cursor tabbed over 
} <--curly on bottom 

我的問題是,我真的不明白這正則表達式尚好,或如何使用他們,我n與鍵盤映射組合在一起。真的是我需要弄清楚(我認爲)是如何插入某種條件成基本上只是檢查鍵盤佈局

if (next char is a ] and the char before it is a [) 
then don't do any completion hoping 
else do exactly like the keymap is already set up to do 

我怎麼會去這樣做呢?感謝您的幫助:)

回答

0

如果我正確理解您的問題,您希望功能在光標位於括號內()內但不在方括號內[]內時有效。如果是這樣的情況下,只需改變這一行:

{ "key": "following_text", "operator": "regex_contains", "operand": "^[)'\"\\]]", "match_all": true }, 

這樣:

{ "key": "following_text", "operator": "regex_contains", "operand": "^[)'\"\]", "match_all": true }, 

我所做的只是改變從這個

"^[)'\"\\]]" 

"operand"

"^[)'\"\]" 

刪除

\] 
+0

嘿,謝謝你的回覆。這實際上並不是我希望它與括號或方括號一起工作,它更像是:專門用於方括號的方括號如果不相鄰,則如何使它工作(即跳過括號):'[一些代碼|]'但不起作用(這是打開一個換行符),當括號正好相鄰,如:[[|]'。垂直管道應該代表我的光標在哪裏。這是否更有意義? – mbigras

+0

@mbigras好的,我現在明白了。我會看看我能想出什麼... – MattDMo

+0

嘿馬特,只是想知道如果你有機會再看看這個呢。我仍然試圖自己弄清楚,如果你找到了方法,我一定會很感激:) – mbigras

相關問題