9.1. Default Key Bindings (Windows)
For each table, a blank line means that keypress is not mapped in
Default/Default (Windows).sublime-keymap.
9.1.1. Number Keys
Key:
A = Alt
C = Ctrl
S = Shift
Ctxt = Context
Key |
A |
C |
S |
Ctxt |
Command |
Args |
|---|---|---|---|---|---|---|
1 |
||||||
1 |
x |
|||||
1 |
x |
focus_group |
{"group": 0} |
|||
1 |
x |
x |
move_to_group |
{"group": 0} |
||
1 |
x |
select_by_index |
{"index": 0} |
|||
1 |
x |
focus_by_index |
{"index": 0} |
|||
1 |
x |
x |
set_layout |
{"cells": [[0, 0, 1, 1]], "cols": [0.0, 1.0], "rows": [0.0, 1.0]} |
||
1 |
x |
x |
||||
1 |
x |
x |
x |
|||
2 |
||||||
2 |
x |
|||||
2 |
x |
focus_group |
{"group": 1} |
|||
2 |
x |
x |
move_to_group |
{"group": 1} |
||
2 |
x |
select_by_index |
{"index": 1} |
|||
2 |
x |
focus_by_index |
{"index": 1} |
|||
2 |
x |
x |
set_layout |
{"cells": [[0, 0, 1, 1], [1, 0, 2, 1]], "cols": [0.0, 0.5, 1.0], "rows": [0.0, 1.0]} |
||
2 |
x |
x |
||||
2 |
x |
x |
x |
|||
3 |
||||||
3 |
x |
|||||
3 |
x |
focus_group |
{"group": 2} |
|||
3 |
x |
x |
move_to_group |
{"group": 2} |
||
3 |
x |
select_by_index |
{"index": 2} |
|||
3 |
x |
focus_by_index |
{"index": 2} |
|||
3 |
x |
x |
set_layout |
{"cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1]], "cols": [0.0, 0.33, 0.66, 1.0], "rows": [0.0, 1.0]} |
||
3 |
x |
x |
||||
3 |
x |
x |
x |
|||
4 |
||||||
4 |
x |
|||||
4 |
x |
focus_group |
{"group": 3} |
|||
4 |
x |
x |
move_to_group |
{"group": 3} |
||
4 |
x |
select_by_index |
{"index": 3} |
|||
4 |
x |
focus_by_index |
{"index": 3} |
|||
4 |
x |
x |
set_layout |
{"cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1], [3, 0, 4, 1]], "cols": [0.0, 0.25, 0.5, 0.75, 1.0], "rows": [0.0, 1.0]} |
||
4 |
x |
x |
||||
4 |
x |
x |
x |
|||
5 |
||||||
5 |
x |
|||||
5 |
x |
focus_group |
{"group": 4} |
|||
5 |
x |
x |
move_to_group |
{"group": 4} |
||
5 |
x |
select_by_index |
{"index": 4} |
|||
5 |
x |
focus_by_index |
{"index": 4} |
|||
5 |
x |
x |
set_layout |
{"cells": [[0, 0, 1, 1], [1, 0, 2, 1], [0, 1, 1, 2], [1, 1, 2, 2]], "cols": [0.0, 0.5, 1.0], "rows": [0.0, 0.5, 1.0]} |
||
5 |
x |
x |
||||
5 |
x |
x |
x |
|||
6 |
||||||
6 |
x |
|||||
6 |
x |
focus_group |
{"group": 5} |
|||
6 |
x |
x |
move_to_group |
{"group": 5} |
||
6 |
x |
select_by_index |
{"index": 5} |
|||
6 |
x |
focus_by_index |
{"index": 5} |
|||
6 |
x |
x |
||||
6 |
x |
x |
||||
6 |
x |
x |
x |
|||
7 |
||||||
7 |
x |
|||||
7 |
x |
focus_group |
{"group": 6} |
|||
7 |
x |
x |
move_to_group |
{"group": 6} |
||
7 |
x |
select_by_index |
{"index": 6} |
|||
7 |
x |
focus_by_index |
{"index": 6} |
|||
7 |
x |
x |
||||
7 |
x |
x |
||||
7 |
x |
x |
x |
|||
8 |
||||||
8 |
x |
|||||
8 |
x |
focus_group |
{"group": 7} |
|||
8 |
x |
x |
move_to_group |
{"group": 7} |
||
8 |
x |
select_by_index |
{"index": 7} |
|||
8 |
x |
focus_by_index |
{"index": 7} |
|||
8 |
x |
x |
set_layout |
{"cells": [[0, 0, 1, 1], [0, 1, 1, 2]], "cols": [0.0, 1.0], "rows": [0.0, 0.5, 1.0]} |
||
8 |
x |
x |
||||
8 |
x |
x |
x |
|||
9 |
||||||
9 |
x |
|||||
9 |
x |
focus_group |
{"group": 8} |
|||
9 |
x |
x |
move_to_group |
{"group": 8} |
||
9 |
x |
select_last_tab |
||||
9 |
x |
focus_by_index |
{"index": 8} |
|||
9 |
x |
x |
set_layout |
{"cells": [[0, 0, 1, 1], [0, 1, 1, 2], [0, 2, 1, 3]], "cols": [0.0, 1.0], "rows": [0.0, 0.33, 0.66, 1.0]} |
||
9 |
x |
x |
||||
9 |
x |
x |
x |
|||
0 |
||||||
0 |
x |
|||||
0 |
x |
focus_side_bar |
||||
0 |
x |
x |
||||
0 |
x |
focus_by_index |
{"index": 9} |
|||
0 |
x |
x |
||||
0 |
x |
x |
||||
0 |
x |
x |
x |
"context": [
{ "key": "group_has_multiselect" }
// Does View group have multi-select?
]
Context for Alt-2: focus_by_index {“index”: 1}
"context": [
{ "key": "group_has_multiselect" }
// Does View group have multi-select?
]
Context for Alt-3: focus_by_index {“index”: 2}
"context": [
{ "key": "group_has_multiselect" }
// Does View group have multi-select?
]
Context for Alt-4: focus_by_index {“index”: 3}
"context": [
{ "key": "group_has_multiselect" }
// Does View group have multi-select?
]
Context for Alt-5: focus_by_index {“index”: 4}
"context": [
{ "key": "group_has_multiselect" }
// Does View group have multi-select?
]
Context for Alt-6: focus_by_index {“index”: 5}
"context": [
{ "key": "group_has_multiselect" }
// Does View group have multi-select?
]
Context for Alt-7: focus_by_index {“index”: 6}
"context": [
{ "key": "group_has_multiselect" }
// Does View group have multi-select?
]
Context for Alt-8: focus_by_index {“index”: 7}
"context": [
{ "key": "group_has_multiselect" }
// Does View group have multi-select?
]
Context for Alt-9: focus_by_index {“index”: 8}
"context": [
{ "key": "group_has_multiselect" }
// Does View group have multi-select?
]
Context for Alt-0: focus_by_index {“index”: 9}
"context": [
{ "key": "group_has_multiselect" }
// Does View group have multi-select?
]
9.1.2. Letter Keys
Key:
A = Alt
C = Ctrl
S = Shift
Ctxt = Context
Key |
A |
C |
S |
Ctxt |
Command |
Args |
|---|---|---|---|---|---|---|
a |
||||||
a |
x |
|||||
a |
x |
select_all |
||||
a |
x |
x |
expand_selection |
{"to": "smart"} |
||
a |
x |
x |
expand_selection |
{"to": "tag"} |
||
a |
x |
toggle_preserve_case |
||||
a |
x |
x |
||||
a |
x |
x |
||||
a |
x |
x |
x |
|||
b |
||||||
b |
x |
|||||
b |
x |
build |
||||
b |
x |
x |
build |
{"select": true} |
||
b |
x |
|||||
b |
x |
x |
||||
b |
x |
x |
||||
b |
x |
x |
x |
|||
c |
||||||
c |
x |
|||||
c |
x |
copy |
||||
c |
x |
x |
||||
c |
x |
toggle_case_sensitive |
||||
c |
x |
x |
||||
c |
x |
x |
||||
c |
x |
x |
x |
|||
d |
||||||
d |
x |
|||||
d |
x |
find_under_expand |
||||
d |
x |
x |
duplicate_line |
|||
d |
x |
|||||
d |
x |
x |
||||
d |
x |
x |
||||
d |
x |
x |
x |
|||
e |
||||||
e |
x |
|||||
e |
x |
slurp_find_string |
||||
e |
x |
x |
slurp_replace_string |
|||
e |
x |
|||||
e |
x |
x |
||||
e |
x |
x |
||||
e |
x |
x |
x |
|||
f |
||||||
f |
x |
|||||
f |
x |
show_panel |
{"panel": "find", "reverse": false} |
|||
f |
x |
x |
show_panel |
{"panel": "find_in_files"} |
||
f |
x |
|||||
f |
x |
x |
||||
f |
x |
x |
||||
f |
x |
x |
x |
|||
g |
||||||
g |
x |
|||||
g |
x |
show_overlay |
{"overlay": "goto", "text": ":"} |
|||
g |
x |
x |
||||
g |
x |
|||||
g |
x |
x |
||||
g |
x |
x |
||||
g |
x |
x |
x |
|||
h |
||||||
h |
x |
|||||
h |
x |
show_panel |
{"panel": "replace", "reverse": false} |
|||
h |
x |
x |
replace_next |
|||
h |
x |
|||||
h |
x |
x |
||||
h |
x |
x |
||||
h |
x |
x |
x |
|||
i |
||||||
i |
x |
|||||
i |
x |
show_panel |
{"panel": "incremental_find", "reverse": false} |
|||
i |
x |
x |
show_panel |
{"panel": "incremental_find", "reverse": true} |
||
i |
x |
|||||
i |
x |
x |
||||
i |
x |
x |
||||
i |
x |
x |
x |
|||
j |
||||||
j |
x |
|||||
j |
x |
|||||
j |
x |
x |
join_lines |
|||
j |
x |
|||||
j |
x |
x |
||||
j |
x |
x |
||||
j |
x |
x |
x |
|||
k |
||||||
k |
x |
|||||
k |
x |
|||||
k |
x |
x |
run_macro_file |
|
||
k |
x |
|||||
k |
x |
x |
||||
k |
x |
x |
||||
k |
x |
x |
x |
|||
l |
||||||
l |
x |
|||||
l |
x |
expand_selection |
{"to": "line"} |
|||
l |
x |
x |
split_selection_into_lines |
|||
l |
x |
expand_selection |
{"to": "line_prev"} |
|||
l |
x |
x |
||||
l |
x |
x |
||||
l |
x |
x |
x |
|||
m |
||||||
m |
x |
|||||
m |
x |
move_to |
{"to": "brackets"} |
|||
m |
x |
x |
expand_selection |
{"to": "brackets"} |
||
m |
x |
|||||
m |
x |
x |
||||
m |
x |
x |
||||
m |
x |
x |
x |
|||
n |
||||||
n |
x |
|||||
n |
x |
new_file |
||||
n |
x |
x |
new_window |
|||
n |
x |
|||||
n |
x |
x |
||||
n |
x |
x |
||||
n |
x |
x |
x |
|||
o |
||||||
o |
x |
|||||
o |
x |
prompt_open_file |
||||
o |
x |
x |
||||
o |
x |
switch_file |
{"extensions": ["cpp", "cxx", "cc", "c", "hpp", "hxx", "hh", "h", "ipp", "inl", "m", "mm"]} |
|||
o |
x |
x |
switch_file |
{"extensions": ["cpp", "cxx", "cc", "c", "hpp", "hxx", "hh", "h", "ipp", "inl", "m", "mm"], "side_by_side": true} |
||
o |
x |
x |
||||
o |
x |
x |
x |
|||
p |
||||||
p |
x |
|||||
p |
x |
show_overlay |
{"overlay": "goto", "show_files": true} |
|||
p |
x |
x |
show_overlay |
{"overlay": "command_palette"} |
||
p |
x |
|||||
p |
x |
x |
prompt_select_workspace |
|||
p |
x |
x |
||||
p |
x |
x |
x |
show_scope_name |
||
q |
||||||
q |
x |
|||||
q |
x |
toggle_record_macro |
||||
q |
x |
x |
run_macro |
|||
q |
x |
wrap_lines |
||||
q |
x |
x |
||||
q |
x |
x |
||||
q |
x |
x |
x |
|||
r |
||||||
r |
x |
|||||
r |
x |
show_overlay |
{"overlay": "goto", "text": "@"} |
|||
r |
x |
x |
goto_symbol_in_project |
|||
r |
x |
toggle_regex |
||||
r |
x |
x |
||||
r |
x |
x |
||||
r |
x |
x |
x |
|||
s |
||||||
s |
x |
|||||
s |
x |
save |
{"async": true} |
|||
s |
x |
x |
prompt_save_as |
|||
s |
x |
|||||
s |
x |
x |
||||
s |
x |
x |
||||
s |
x |
x |
x |
|||
t |
||||||
t |
x |
|||||
t |
x |
transpose |
||||
t |
x |
x |
reopen_last_file |
{"source": "window"} |
||
t |
x |
|||||
t |
x |
x |
||||
t |
x |
x |
||||
t |
x |
x |
x |
|||
u |
||||||
u |
x |
|||||
u |
x |
soft_undo |
||||
u |
x |
x |
soft_redo |
|||
u |
x |
|||||
u |
x |
x |
||||
u |
x |
x |
||||
u |
x |
x |
x |
|||
v |
||||||
v |
x |
|||||
v |
x |
paste |
||||
v |
x |
x |
paste_and_indent |
|||
v |
x |
|||||
v |
x |
x |
||||
v |
x |
x |
||||
v |
x |
x |
x |
|||
w |
||||||
w |
x |
|||||
w |
x |
close |
||||
w |
x |
close_transient |
||||
w |
x |
x |
close_window |
|||
w |
x |
toggle_whole_word |
||||
w |
x |
x |
insert_snippet |
{"name": "Packages/XML/Snippets/xml-long-tag.sublime-snippet"} |
||
w |
x |
x |
||||
w |
x |
x |
x |
|||
x |
||||||
x |
x |
|||||
x |
x |
cut |
||||
x |
x |
x |
||||
x |
x |
|||||
x |
x |
x |
||||
x |
x |
x |
||||
x |
x |
x |
x |
|||
y |
||||||
y |
x |
|||||
y |
x |
redo_or_repeat |
||||
y |
x |
x |
||||
y |
x |
|||||
y |
x |
x |
||||
y |
x |
x |
||||
y |
x |
x |
x |
|||
z |
||||||
z |
x |
|||||
z |
x |
undo |
||||
z |
x |
x |
redo |
|||
z |
x |
|||||
z |
x |
x |
||||
z |
x |
x |
||||
z |
x |
x |
x |
Context for Ctrl-Shift-A: expand_selection {“to”: “tag”}
"context": [
{ "key": "selector", "operand": "(text.html, text.xml) - source", "match_all": true }
// Does selector [(text.html, text.xml) - source] match scope at selection (for all selections)?
]
Context for Alt-A: toggle_preserve_case
"context": [
{ "key": "panel_type" , "operand": "find" }
// Does focused Panel's type == "find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Alt-C: toggle_case_sensitive
"context": [
{ "key": "panel_type" , "operand": "find" }
// Does focused Panel's type == "find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Alt-R: toggle_regex
"context": [
{ "key": "panel_type" , "operand": "find" }
// Does focused Panel's type == "find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Ctrl-W: close_transient
"context": [
{ "key": "group_has_transient_sheet" }
// Does View group have a transient sheet?
]
Context for Alt-W: toggle_whole_word
"context": [
{ "key": "panel_type" , "operand": "find" }
// Does focused Panel's type == "find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
9.1.3. Function Keys
F-Key General Topics:
Key:
A = Alt
C = Ctrl
S = Shift
Ctxt = Context
Key |
A |
C |
S |
Ctxt |
Command |
Args |
|---|---|---|---|---|---|---|
f1 |
||||||
f1 |
x |
|||||
f1 |
x |
|||||
f1 |
x |
x |
||||
f1 |
x |
|||||
f1 |
x |
x |
||||
f1 |
x |
x |
||||
f1 |
x |
x |
x |
|||
f2 |
next_bookmark |
|||||
f2 |
x |
prev_bookmark |
||||
f2 |
x |
toggle_bookmark |
{"toggle_line": true} |
|||
f2 |
x |
x |
clear_bookmarks |
|||
f2 |
x |
select_all_bookmarks |
||||
f2 |
x |
x |
||||
f2 |
x |
x |
||||
f2 |
x |
x |
x |
|||
f3 |
find_next |
|||||
f3 |
x |
find_prev |
||||
f3 |
x |
find_under |
||||
f3 |
x |
x |
find_under_prev |
|||
f3 |
x |
find_all_under |
||||
f3 |
x |
x |
||||
f3 |
x |
x |
||||
f3 |
x |
x |
x |
|||
f4 |
next_result |
|||||
f4 |
x |
prev_result |
||||
f4 |
x |
close_file |
||||
f4 |
x |
x |
||||
f4 |
x |
|||||
f4 |
x |
x |
||||
f4 |
x |
x |
||||
f4 |
x |
x |
x |
|||
f5 |
||||||
f5 |
x |
|||||
f5 |
x |
|||||
f5 |
x |
x |
||||
f5 |
x |
|||||
f5 |
x |
x |
||||
f5 |
x |
x |
||||
f5 |
x |
x |
x |
|||
f6 |
toggle_setting |
{"setting": "spell_check"} |
||||
f6 |
x |
|||||
f6 |
x |
next_misspelling |
||||
f6 |
x |
x |
prev_misspelling |
|||
f6 |
x |
|||||
f6 |
x |
x |
||||
f6 |
x |
x |
||||
f6 |
x |
x |
x |
|||
f7 |
build |
|||||
f7 |
x |
|||||
f7 |
x |
|||||
f7 |
x |
x |
||||
f7 |
x |
|||||
f7 |
x |
x |
||||
f7 |
x |
x |
||||
f7 |
x |
x |
x |
|||
f8 |
||||||
f8 |
x |
|||||
f8 |
x |
|||||
f8 |
x |
x |
||||
f8 |
x |
|||||
f8 |
x |
x |
||||
f8 |
x |
x |
||||
f8 |
x |
x |
x |
|||
f9 |
sort_lines |
{"case_sensitive": false} |
||||
f9 |
x |
|||||
f9 |
x |
sort_lines |
{"case_sensitive": true} |
|||
f9 |
x |
x |
||||
f9 |
x |
|||||
f9 |
x |
x |
||||
f9 |
x |
x |
||||
f9 |
x |
x |
x |
|||
f10 |
||||||
f10 |
x |
context_menu |
||||
f10 |
x |
|||||
f10 |
x |
x |
||||
f10 |
x |
|||||
f10 |
x |
x |
||||
f10 |
x |
x |
||||
f10 |
x |
x |
x |
|||
f11 |
toggle_full_screen |
|||||
f11 |
x |
toggle_distraction_free |
||||
f11 |
x |
|||||
f11 |
x |
x |
||||
f11 |
x |
|||||
f11 |
x |
x |
||||
f11 |
x |
x |
||||
f11 |
x |
x |
x |
|||
f12 |
goto_definition |
|||||
f12 |
auto_complete_open_link |
|||||
f12 |
x |
goto_reference |
||||
f12 |
x |
goto_definition |
{"clear_to_right": true, "side_by_side": true} |
|||
f12 |
x |
x |
goto_reference |
{"clear_to_right": true, "side_by_side": true} |
||
f12 |
x |
|||||
f12 |
x |
x |
||||
f12 |
x |
x |
||||
f12 |
x |
x |
x |
|||
f13 |
||||||
f13 |
x |
|||||
f13 |
x |
|||||
f13 |
x |
x |
||||
f13 |
x |
|||||
f13 |
x |
x |
||||
f13 |
x |
x |
||||
f13 |
x |
x |
x |
|||
f14 |
||||||
f14 |
x |
|||||
f14 |
x |
|||||
f14 |
x |
x |
||||
f14 |
x |
|||||
f14 |
x |
x |
||||
f14 |
x |
x |
||||
f14 |
x |
x |
x |
|||
f15 |
||||||
f15 |
x |
|||||
f15 |
x |
|||||
f15 |
x |
x |
||||
f15 |
x |
|||||
f15 |
x |
x |
||||
f15 |
x |
x |
||||
f15 |
x |
x |
x |
|||
f16 |
||||||
f16 |
x |
|||||
f16 |
x |
|||||
f16 |
x |
x |
||||
f16 |
x |
|||||
f16 |
x |
x |
||||
f16 |
x |
x |
||||
f16 |
x |
x |
x |
|||
f17 |
||||||
f17 |
x |
|||||
f17 |
x |
|||||
f17 |
x |
x |
||||
f17 |
x |
|||||
f17 |
x |
x |
||||
f17 |
x |
x |
||||
f17 |
x |
x |
x |
|||
f18 |
||||||
f18 |
x |
|||||
f18 |
x |
|||||
f18 |
x |
x |
||||
f18 |
x |
|||||
f18 |
x |
x |
||||
f18 |
x |
x |
||||
f18 |
x |
x |
x |
|||
f19 |
||||||
f19 |
x |
|||||
f19 |
x |
|||||
f19 |
x |
x |
||||
f19 |
x |
|||||
f19 |
x |
x |
||||
f19 |
x |
x |
||||
f19 |
x |
x |
x |
|||
f20 |
||||||
f20 |
x |
|||||
f20 |
x |
|||||
f20 |
x |
x |
||||
f20 |
x |
|||||
f20 |
x |
x |
||||
f20 |
x |
x |
||||
f20 |
x |
x |
x |
Context for F12: auto_complete_open_link
"context": [
{ "key": "auto_complete_visible" }
// Is auto-complete, mini-auto-complete or async-auto-complete popup visible?
]
9.1.4. Symbol Keys
Key:
A = Alt
C = Ctrl
S = Shift
Ctxt = Context
Key |
A |
C |
S |
Ctxt |
Command |
Args |
|---|---|---|---|---|---|---|
' |
insert_snippet |
{"contents": "'$0'"} |
||||
' |
insert_snippet |
{"contents": "'${0:$SELECTION}'"} |
||||
' |
move |
{"by": "characters", "forward": true} |
||||
' |
x |
|||||
' |
x |
|||||
' |
x |
x |
||||
' |
x |
|||||
' |
x |
x |
||||
' |
x |
x |
||||
' |
x |
x |
x |
|||
, |
||||||
, |
x |
|||||
, |
x |
prev_modification |
||||
, |
x |
x |
||||
, |
x |
|||||
, |
x |
x |
||||
, |
x |
x |
||||
, |
x |
x |
x |
|||
- |
||||||
- |
x |
|||||
- |
x |
decrease_font_size |
||||
- |
x |
x |
||||
- |
x |
jump_back |
||||
- |
x |
x |
jump_forward |
|||
- |
x |
x |
||||
- |
x |
x |
x |
|||
. |
||||||
. |
x |
|||||
. |
x |
next_modification |
||||
. |
x |
x |
||||
. |
x |
close_tag |
||||
. |
x |
x |
||||
. |
x |
x |
||||
. |
x |
x |
x |
|||
/ |
close_tag |
{"insert_slash": true} |
||||
/ |
x |
|||||
/ |
x |
toggle_comment |
{"block": false} |
|||
/ |
x |
x |
toggle_comment |
{"block": true} |
||
/ |
x |
|||||
/ |
x |
x |
||||
/ |
x |
x |
||||
/ |
x |
x |
x |
|||
; |
||||||
; |
x |
|||||
; |
x |
show_overlay |
{"overlay": "goto", "text": "#"} |
|||
; |
x |
x |
||||
; |
x |
|||||
; |
x |
x |
||||
; |
x |
x |
||||
; |
x |
x |
x |
|||
= |
||||||
= |
x |
|||||
= |
x |
increase_font_size |
||||
= |
x |
x |
||||
= |
x |
|||||
= |
x |
x |
||||
= |
x |
x |
||||
= |
x |
x |
x |
|||
[ |
insert_snippet |
{"contents": "[$0]"} |
||||
[ |
insert_snippet |
{"contents": "[${0:$SELECTION}]"} |
||||
[ |
x |
|||||
[ |
x |
unindent |
||||
[ |
x |
x |
fold |
|||
[ |
x |
|||||
[ |
x |
x |
||||
[ |
x |
x |
||||
[ |
x |
x |
x |
|||
\ |
||||||
\ |
x |
|||||
\ |
x |
|||||
\ |
x |
x |
||||
\ |
x |
|||||
\ |
x |
x |
||||
\ |
x |
x |
||||
\ |
x |
x |
x |
|||
] |
move |
{"by": "characters", "forward": true} |
||||
] |
x |
|||||
] |
x |
indent |
||||
] |
x |
x |
unfold |
|||
] |
x |
|||||
] |
x |
x |
||||
] |
x |
x |
||||
] |
x |
x |
x |
|||
` |
||||||
` |
x |
|||||
` |
x |
show_panel |
{"panel": "console", "toggle": true} |
|||
` |
x |
x |
||||
` |
x |
|||||
` |
x |
x |
||||
` |
x |
x |
||||
` |
x |
x |
x |
|||
! |
||||||
! |
x |
|||||
! |
x |
|||||
! |
x |
x |
||||
! |
x |
|||||
! |
x |
x |
||||
! |
x |
x |
||||
! |
x |
x |
x |
|||
" |
insert_snippet |
{"contents": "\"$0\""} |
||||
" |
insert_snippet |
{"contents": "\"${0:$SELECTION}\""} |
||||
" |
move |
{"by": "characters", "forward": true} |
||||
" |
x |
|||||
" |
x |
|||||
" |
x |
x |
||||
" |
x |
|||||
" |
x |
x |
||||
" |
x |
x |
||||
" |
x |
x |
x |
|||
# |
||||||
# |
x |
|||||
# |
x |
|||||
# |
x |
x |
||||
# |
x |
|||||
# |
x |
x |
||||
# |
x |
x |
||||
# |
x |
x |
x |
|||
$ |
||||||
$ |
x |
|||||
$ |
x |
|||||
$ |
x |
x |
||||
$ |
x |
|||||
$ |
x |
x |
||||
$ |
x |
x |
||||
$ |
x |
x |
x |
|||
% |
||||||
% |
x |
|||||
% |
x |
|||||
% |
x |
x |
||||
% |
x |
|||||
% |
x |
x |
||||
% |
x |
x |
||||
% |
x |
x |
x |
|||
& |
||||||
& |
x |
|||||
& |
x |
|||||
& |
x |
x |
||||
& |
x |
|||||
& |
x |
x |
||||
& |
x |
x |
||||
& |
x |
x |
x |
|||
( |
insert_snippet |
{"contents": "($0)"} |
||||
( |
insert_snippet |
{"contents": "(${0:$SELECTION})"} |
||||
( |
x |
|||||
( |
x |
|||||
( |
x |
x |
||||
( |
x |
|||||
( |
x |
x |
||||
( |
x |
x |
||||
( |
x |
x |
x |
|||
) |
move |
{"by": "characters", "forward": true} |
||||
) |
x |
|||||
) |
x |
|||||
) |
x |
x |
||||
) |
x |
|||||
) |
x |
x |
||||
) |
x |
x |
||||
) |
x |
x |
x |
|||
* |
||||||
* |
x |
|||||
* |
x |
|||||
* |
x |
x |
||||
* |
x |
|||||
* |
x |
x |
||||
* |
x |
x |
||||
* |
x |
x |
x |
|||
+ |
||||||
+ |
x |
|||||
+ |
x |
increase_font_size |
||||
+ |
x |
x |
||||
+ |
x |
|||||
+ |
x |
x |
||||
+ |
x |
x |
||||
+ |
x |
x |
x |
|||
: |
||||||
: |
x |
|||||
: |
x |
|||||
: |
x |
x |
||||
: |
x |
|||||
: |
x |
x |
||||
: |
x |
x |
||||
: |
x |
x |
x |
|||
< |
||||||
< |
x |
|||||
< |
x |
|||||
< |
x |
x |
||||
< |
x |
|||||
< |
x |
x |
||||
< |
x |
x |
||||
< |
x |
x |
x |
|||
> |
||||||
> |
x |
|||||
> |
x |
|||||
> |
x |
x |
||||
> |
x |
|||||
> |
x |
x |
||||
> |
x |
x |
||||
> |
x |
x |
x |
|||
? |
||||||
? |
x |
|||||
? |
x |
|||||
? |
x |
x |
||||
? |
x |
|||||
? |
x |
x |
||||
? |
x |
x |
||||
? |
x |
x |
x |
|||
@ |
||||||
@ |
x |
|||||
@ |
x |
|||||
@ |
x |
x |
||||
@ |
x |
|||||
@ |
x |
x |
||||
@ |
x |
x |
||||
@ |
x |
x |
x |
|||
^ |
||||||
^ |
x |
|||||
^ |
x |
|||||
^ |
x |
x |
||||
^ |
x |
|||||
^ |
x |
x |
||||
^ |
x |
x |
||||
^ |
x |
x |
x |
|||
_ |
||||||
_ |
x |
|||||
_ |
x |
|||||
_ |
x |
x |
||||
_ |
x |
|||||
_ |
x |
x |
||||
_ |
x |
x |
||||
_ |
x |
x |
x |
|||
{ |
insert_snippet |
{"contents": "{$0}"} |
||||
{ |
wrap_block |
{"begin": "{", "end": "}"} |
||||
{ |
insert_snippet |
{"contents": "{${0:$SELECTION}}"} |
||||
{ |
x |
|||||
{ |
x |
|||||
{ |
x |
x |
||||
{ |
x |
|||||
{ |
x |
x |
||||
{ |
x |
x |
||||
{ |
x |
x |
x |
|||
| |
||||||
| |
x |
|||||
| |
x |
|||||
| |
x |
x |
||||
| |
x |
|||||
| |
x |
x |
||||
| |
x |
x |
||||
| |
x |
x |
x |
|||
} |
move |
{"by": "characters", "forward": true} |
||||
} |
x |
|||||
} |
x |
|||||
} |
x |
x |
||||
} |
x |
|||||
} |
x |
x |
||||
} |
x |
x |
||||
} |
x |
x |
x |
|||
~ |
||||||
~ |
x |
|||||
~ |
x |
|||||
~ |
x |
x |
||||
~ |
x |
|||||
~ |
x |
x |
||||
~ |
x |
x |
||||
~ |
x |
x |
x |
Context for ': insert_snippet {“contents”: “’$0’”}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains" , "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true }
// Does regex "^(?:\t| |\\)|]|\\}|>|$)" match any of the text between left edge of selection and EOL (for all selections)?,
{ "key": "preceding_text" , "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true }
// Does regex "['a-zA-Z0-9_]$" match none of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "eol_selector" , "operator": "not_equal" , "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }
// Does selector [string.quoted.single - punctuation.definition.string.end] NOT match scope at EOL (for all selections)?
]
Context for ': insert_snippet {“contents”: “’${0:$SELECTION}’”}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "operand": false, "match_all": true }
// Is selection NOT empty (for all selections)?
]
Context for ': move {“by”: “characters”, “forward”: true}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^'", "match_all": true }
// Does regex "^'" match any of the text between left edge of selection and EOL (for all selections)?,
{ "key": "selector" , "operator": "not_equal" , "operand": "punctuation.definition.string.begin", "match_all": true }
// Does selector [punctuation.definition.string.begin] NOT match scope at selection (for all selections)?,
{ "key": "eol_selector" , "operator": "not_equal" , "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }
// Does selector [string.quoted.single - punctuation.definition.string.end] NOT match scope at EOL (for all selections)?
]
Context for /: close_tag {“insert_slash”: true}
"context": [
{ "key": "selector" , "operand": "(text.html, text.xml) - string - comment", "match_all": true }
// Does selector [(text.html, text.xml) - string - comment] match scope at selection (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_match", "operand": ".*<$", "match_all": true }
// Does regex ".*<$" fully match the text between BOL and the left edge of selection (for all selections)?,
{ "key": "setting.auto_close_tags" }
// Is the View-setting [auto_close_tags] == true?
]
Context for [: insert_snippet {“contents”: “[$0]”}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
// Does regex "^(?:\t| |\\)|]|;|\\}|$)" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for [: insert_snippet {“contents”: “[${0:$SELECTION}]”}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "operand": false, "match_all": true }
// Is selection NOT empty (for all selections)?
]
Context for ]: move {“by”: “characters”, “forward”: true}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^\\]", "match_all": true }
// Does regex "^\\]" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for ": insert_snippet {“contents”: “"$0"”}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains" , "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true }
// Does regex "^(?:\t| |\\)|]|\\}|>|$)" match any of the text between left edge of selection and EOL (for all selections)?,
{ "key": "preceding_text" , "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true }
// Does regex "[\"a-zA-Z0-9_]$" match none of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "eol_selector" , "operator": "not_equal" , "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }
// Does selector [string.quoted.double - punctuation.definition.string.end] NOT match scope at EOL (for all selections)?
]
Context for ": insert_snippet {“contents”: “"${0:$SELECTION}"”}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "operand": false, "match_all": true }
// Is selection NOT empty (for all selections)?
]
Context for ": move {“by”: “characters”, “forward”: true}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^\"", "match_all": true }
// Does regex "^\"" match any of the text between left edge of selection and EOL (for all selections)?,
{ "key": "selector" , "operator": "not_equal" , "operand": "punctuation.definition.string.begin", "match_all": true }
// Does selector [punctuation.definition.string.begin] NOT match scope at selection (for all selections)?,
{ "key": "eol_selector" , "operator": "not_equal" , "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }
// Does selector [string.quoted.double - punctuation.definition.string.end] NOT match scope at EOL (for all selections)?
]
Context for (: insert_snippet {“contents”: “($0)”}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
// Does regex "^(?:\t| |\\)|]|;|\\}|$)" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for (: insert_snippet {“contents”: “(${0:$SELECTION})”}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "operand": false, "match_all": true }
// Is selection NOT empty (for all selections)?
]
Context for ): move {“by”: “characters”, “forward”: true}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^\\)", "match_all": true }
// Does regex "^\\)" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for {: insert_snippet {“contents”: “{$0}”}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true }
// Does regex "^(?:\t| |\\)|]|\\}|$)" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for {: wrap_block {“begin”: “{”, “end”: “}”}
"context": [
{ "key": "indented_block" , "match_all": true }
// Is current block indented (for all selections)?,
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_match", "operand": "^$", "match_all": true }
// Does regex "^$" fully match the text between left edge of selection and EOL (for all selections)?
]
Context for {: insert_snippet {“contents”: “{${0:$SELECTION}}”}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "operand": false, "match_all": true }
// Is selection NOT empty (for all selections)?
]
Context for }: move {“by”: “characters”, “forward”: true}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^\\}", "match_all": true }
// Does regex "^\\}" match any of the text between left edge of selection and EOL (for all selections)?
]
9.1.5. Named Keys
Key:
A = Alt
C = Ctrl
S = Shift
Ctxt = Context
Key |
A |
C |
S |
Ctxt |
Command |
Args |
|---|---|---|---|---|---|---|
up |
move |
{"by": "lines", "forward": false} |
||||
up |
x |
move |
{"by": "lines", "extend": true, "forward": false} |
|||
up |
x |
scroll_lines |
{"amount": 1.0} |
|||
up |
x |
x |
swap_line_up |
|||
up |
x |
|||||
up |
x |
x |
||||
up |
x |
x |
select_lines |
{"forward": false} |
||
up |
x |
x |
x |
|||
down |
move |
{"by": "lines", "forward": true} |
||||
down |
x |
move |
{"by": "lines", "extend": true, "forward": true} |
|||
down |
x |
scroll_lines |
{"amount": -1.0} |
|||
down |
x |
x |
swap_line_down |
|||
down |
x |
|||||
down |
x |
x |
||||
down |
x |
x |
select_lines |
{"forward": true} |
||
down |
x |
x |
x |
|||
left |
move |
{"by": "characters", "forward": false} |
||||
left |
x |
move |
{"by": "characters", "extend": true, "forward": false} |
|||
left |
x |
move |
{"by": "words", "forward": false} |
|||
left |
x |
x |
move |
{"by": "words", "extend": true, "forward": false} |
||
left |
x |
move |
{"by": "subwords", "forward": false} |
|||
left |
x |
x |
move |
{"by": "subwords", "extend": true, "forward": false} |
||
left |
x |
x |
||||
left |
x |
x |
x |
|||
right |
move |
{"by": "characters", "forward": true} |
||||
right |
x |
move |
{"by": "characters", "extend": true, "forward": true} |
|||
right |
x |
move |
{"by": "word_ends", "forward": true} |
|||
right |
x |
x |
move |
{"by": "word_ends", "extend": true, "forward": true} |
||
right |
x |
move |
{"by": "subword_ends", "forward": true} |
|||
right |
x |
x |
move |
{"by": "subword_ends", "extend": true, "forward": true} |
||
right |
x |
x |
||||
right |
x |
x |
x |
|||
insert |
toggle_overwrite |
|||||
insert |
x |
paste |
||||
insert |
x |
copy |
||||
insert |
x |
x |
||||
insert |
x |
|||||
insert |
x |
x |
||||
insert |
x |
x |
||||
insert |
x |
x |
x |
|||
delete |
right_delete |
|||||
delete |
x |
cut |
||||
delete |
x |
delete_word |
{"forward": true} |
|||
delete |
x |
x |
run_macro_file |
|
||
delete |
x |
|||||
delete |
x |
x |
||||
delete |
x |
x |
||||
delete |
x |
x |
x |
|||
home |
move_to |
{"extend": false, "to": "bol"} |
||||
home |
x |
move_to |
{"extend": true, "to": "bol"} |
|||
home |
x |
move_to |
{"extend": false, "to": "bof"} |
|||
home |
x |
x |
move_to |
{"extend": true, "to": "bof"} |
||
home |
x |
|||||
home |
x |
x |
||||
home |
x |
x |
||||
home |
x |
x |
x |
|||
end |
move_to |
{"extend": false, "to": "eol"} |
||||
end |
x |
move_to |
{"extend": true, "to": "eol"} |
|||
end |
x |
move_to |
{"extend": false, "to": "eof"} |
|||
end |
x |
x |
move_to |
{"extend": true, "to": "eof"} |
||
end |
x |
|||||
end |
x |
x |
||||
end |
x |
x |
||||
end |
x |
x |
x |
|||
pageup |
move |
{"by": "pages", "forward": false} |
||||
pageup |
x |
move |
{"by": "pages", "extend": true, "forward": false} |
|||
pageup |
x |
prev_view |
||||
pageup |
x |
x |
prev_view |
{"extend": true} |
||
pageup |
x |
|||||
pageup |
x |
x |
||||
pageup |
x |
x |
||||
pageup |
x |
x |
x |
|||
pagedown |
move |
{"by": "pages", "forward": true} |
||||
pagedown |
x |
move |
{"by": "pages", "extend": true, "forward": true} |
|||
pagedown |
x |
next_view |
||||
pagedown |
x |
x |
next_view |
{"extend": true} |
||
pagedown |
x |
|||||
pagedown |
x |
x |
||||
pagedown |
x |
x |
||||
pagedown |
x |
x |
x |
|||
backspace |
left_delete |
|||||
backspace |
run_macro_file |
|
||||
backspace |
run_macro_file |
|
||||
backspace |
run_macro_file |
|
||||
backspace |
run_macro_file |
|
||||
backspace |
run_macro_file |
|
||||
backspace |
x |
left_delete |
||||
backspace |
x |
delete_word |
{"forward": false} |
|||
backspace |
x |
x |
left_delete |
|||
backspace |
x |
x |
run_macro_file |
|
||
backspace |
x |
|||||
backspace |
x |
x |
||||
backspace |
x |
x |
||||
backspace |
x |
x |
x |
|||
tab |
insert |
{"characters": "\t"} |
||||
tab |
auto_complete |
{"commit_single": true, "default": "\t", "mini": true} |
||||
tab |
auto_complete |
{"default": "\t", "snippets_only": true} |
||||
tab |
expand_snippet |
|||||
tab |
reindent |
|||||
tab |
indent |
|||||
tab |
move |
{"by": "lines", "forward": true} |
||||
tab |
next_field |
|||||
tab |
commit_completion |
|||||
tab |
x |
insert |
{"characters": "\t"} |
|||
tab |
x |
unindent |
||||
tab |
x |
unindent |
||||
tab |
x |
unindent |
||||
tab |
x |
move |
{"by": "lines", "forward": false} |
|||
tab |
x |
prev_field |
||||
tab |
x |
next_view_in_stack |
||||
tab |
x |
x |
prev_view_in_stack |
|||
tab |
x |
|||||
tab |
x |
x |
||||
tab |
x |
x |
||||
tab |
x |
x |
x |
|||
enter |
insert |
{"characters": "\n"} |
||||
enter |
select |
|||||
enter |
commit_completion |
|||||
enter |
run_macro_file |
|
||||
enter |
auto_indent_tag |
|||||
enter |
insert |
{"characters": "\n* "} |
||||
enter |
insert |
{"characters": "\n * "} |
||||
enter |
select |
|||||
enter |
select |
|||||
enter |
find_next |
|||||
enter |
find_next |
|||||
enter |
hide_panel |
|||||
enter |
find_all |
|||||
enter |
x |
insert |
{"characters": "\n"} |
|||
enter |
x |
select |
{"extend": true} |
|||
enter |
x |
run_macro_file |
|
|||
enter |
x |
auto_indent_tag |
||||
enter |
x |
find_prev |
||||
enter |
x |
find_prev |
||||
enter |
x |
chain |
{"commands": [{"command": "find_prev"}, {"command": "hide_panel"}]} |
|||
enter |
x |
select |
{"clear_to_right": true, "extend": true} |
|||
enter |
x |
run_macro_file |
|
|||
enter |
x |
x |
run_macro_file |
|
||
enter |
x |
select |
{"replace": true} |
|||
enter |
x |
find_all |
{"close_panel": true} |
|||
enter |
x |
find_all |
{"close_panel": true} |
|||
enter |
x |
find_all |
{"close_panel": true} |
|||
enter |
x |
find_all |
||||
enter |
x |
x |
||||
enter |
x |
x |
replace_all |
{"close_panel": true} |
||
enter |
x |
x |
replace_all |
|||
enter |
x |
x |
x |
|||
pause |
||||||
pause |
x |
|||||
pause |
x |
|||||
pause |
x |
x |
||||
pause |
x |
|||||
pause |
x |
x |
||||
pause |
x |
x |
||||
pause |
x |
x |
x |
|||
break |
||||||
break |
x |
|||||
break |
x |
cancel_build |
||||
break |
x |
x |
||||
break |
x |
|||||
break |
x |
x |
||||
break |
x |
x |
||||
break |
x |
x |
x |
|||
space |
||||||
space |
x |
|||||
space |
x |
auto_complete |
||||
space |
x |
move |
{"by": "lines", "forward": true} |
|||
space |
x |
x |
expand_selection |
{"to": "scope"} |
||
space |
x |
|||||
space |
x |
x |
||||
space |
x |
x |
||||
space |
x |
x |
x |
|||
escape |
cancel |
|||||
escape |
single_selection |
|||||
escape |
clear_fields |
|||||
escape |
clear_fields |
|||||
escape |
hide_panel |
{"cancel": true} |
||||
escape |
hide_overlay |
|||||
escape |
hide_auto_complete |
|||||
escape |
hide_popup |
|||||
escape |
x |
show_panel |
{"panel": "output.exec"} |
|||
escape |
x |
|||||
escape |
x |
x |
||||
escape |
x |
|||||
escape |
x |
x |
||||
escape |
x |
x |
||||
escape |
x |
x |
x |
|||
context_menu |
context_menu |
|||||
context_menu |
x |
|||||
context_menu |
x |
|||||
context_menu |
x |
x |
||||
context_menu |
x |
|||||
context_menu |
x |
x |
||||
context_menu |
x |
x |
||||
context_menu |
x |
x |
x |
|||
backquote |
||||||
backquote |
x |
|||||
backquote |
x |
|||||
backquote |
x |
x |
||||
backquote |
x |
|||||
backquote |
x |
x |
||||
backquote |
x |
x |
||||
backquote |
x |
x |
x |
|||
equals |
||||||
equals |
x |
|||||
equals |
x |
increase_font_size |
||||
equals |
x |
x |
decrease_font_size |
|||
equals |
x |
|||||
equals |
x |
x |
||||
equals |
x |
x |
||||
equals |
x |
x |
x |
|||
forward_slash |
||||||
forward_slash |
x |
|||||
forward_slash |
x |
|||||
forward_slash |
x |
x |
||||
forward_slash |
x |
|||||
forward_slash |
x |
x |
||||
forward_slash |
x |
x |
||||
forward_slash |
x |
x |
x |
|||
minus |
||||||
minus |
x |
|||||
minus |
x |
|||||
minus |
x |
x |
||||
minus |
x |
|||||
minus |
x |
x |
||||
minus |
x |
x |
||||
minus |
x |
x |
x |
|||
plus |
||||||
plus |
x |
|||||
plus |
x |
|||||
plus |
x |
x |
||||
plus |
x |
|||||
plus |
x |
x |
||||
plus |
x |
x |
||||
plus |
x |
x |
x |
|||
close |
||||||
close |
x |
|||||
close |
x |
|||||
close |
x |
x |
||||
close |
x |
|||||
close |
x |
x |
||||
close |
x |
x |
||||
close |
x |
x |
x |
|||
copy |
||||||
copy |
x |
|||||
copy |
x |
|||||
copy |
x |
x |
||||
copy |
x |
|||||
copy |
x |
x |
||||
copy |
x |
x |
||||
copy |
x |
x |
x |
|||
cut |
||||||
cut |
x |
|||||
cut |
x |
|||||
cut |
x |
x |
||||
cut |
x |
|||||
cut |
x |
x |
||||
cut |
x |
x |
||||
cut |
x |
x |
x |
|||
find |
||||||
find |
x |
|||||
find |
x |
|||||
find |
x |
x |
||||
find |
x |
|||||
find |
x |
x |
||||
find |
x |
x |
||||
find |
x |
x |
x |
|||
open |
||||||
open |
x |
|||||
open |
x |
|||||
open |
x |
x |
||||
open |
x |
|||||
open |
x |
x |
||||
open |
x |
x |
||||
open |
x |
x |
x |
|||
paste |
||||||
paste |
x |
|||||
paste |
x |
|||||
paste |
x |
x |
||||
paste |
x |
|||||
paste |
x |
x |
||||
paste |
x |
x |
||||
paste |
x |
x |
x |
|||
redo |
||||||
redo |
x |
|||||
redo |
x |
|||||
redo |
x |
x |
||||
redo |
x |
|||||
redo |
x |
x |
||||
redo |
x |
x |
||||
redo |
x |
x |
x |
|||
save |
||||||
save |
x |
|||||
save |
x |
|||||
save |
x |
x |
||||
save |
x |
|||||
save |
x |
x |
||||
save |
x |
x |
||||
save |
x |
x |
x |
|||
sysreq |
||||||
sysreq |
x |
|||||
sysreq |
x |
|||||
sysreq |
x |
x |
||||
sysreq |
x |
|||||
sysreq |
x |
x |
||||
sysreq |
x |
x |
||||
sysreq |
x |
x |
x |
|||
undo |
||||||
undo |
x |
|||||
undo |
x |
|||||
undo |
x |
x |
||||
undo |
x |
|||||
undo |
x |
x |
||||
undo |
x |
x |
||||
undo |
x |
x |
x |
|||
browser_back |
||||||
browser_back |
x |
|||||
browser_back |
x |
|||||
browser_back |
x |
x |
||||
browser_back |
x |
|||||
browser_back |
x |
x |
||||
browser_back |
x |
x |
||||
browser_back |
x |
x |
x |
|||
browser_favorites |
||||||
browser_favorites |
x |
|||||
browser_favorites |
x |
|||||
browser_favorites |
x |
x |
||||
browser_favorites |
x |
|||||
browser_favorites |
x |
x |
||||
browser_favorites |
x |
x |
||||
browser_favorites |
x |
x |
x |
|||
browser_forward |
||||||
browser_forward |
x |
|||||
browser_forward |
x |
|||||
browser_forward |
x |
x |
||||
browser_forward |
x |
|||||
browser_forward |
x |
x |
||||
browser_forward |
x |
x |
||||
browser_forward |
x |
x |
x |
|||
browser_home |
||||||
browser_home |
x |
|||||
browser_home |
x |
|||||
browser_home |
x |
x |
||||
browser_home |
x |
|||||
browser_home |
x |
x |
||||
browser_home |
x |
x |
||||
browser_home |
x |
x |
x |
|||
browser_refresh |
||||||
browser_refresh |
x |
|||||
browser_refresh |
x |
|||||
browser_refresh |
x |
x |
||||
browser_refresh |
x |
|||||
browser_refresh |
x |
x |
||||
browser_refresh |
x |
x |
||||
browser_refresh |
x |
x |
x |
|||
browser_search |
||||||
browser_search |
x |
|||||
browser_search |
x |
|||||
browser_search |
x |
x |
||||
browser_search |
x |
|||||
browser_search |
x |
x |
||||
browser_search |
x |
x |
||||
browser_search |
x |
x |
x |
|||
browser_stop |
||||||
browser_stop |
x |
|||||
browser_stop |
x |
|||||
browser_stop |
x |
x |
||||
browser_stop |
x |
|||||
browser_stop |
x |
x |
||||
browser_stop |
x |
x |
||||
browser_stop |
x |
x |
x |
|||
<character> |
||||||
<character> |
x |
|||||
<character> |
x |
|||||
<character> |
x |
x |
||||
<character> |
x |
|||||
<character> |
x |
x |
||||
<character> |
x |
x |
||||
<character> |
x |
x |
x |
Context for Backspace: run_macro_file {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": "\"$", "match_all": true }
// Does regex "\"$" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^\"", "match_all": true }
// Does regex "^\"" match any of the text between left edge of selection and EOL (for all selections)?,
{ "key": "selector" , "operator": "not_equal" , "operand": "punctuation.definition.string.begin", "match_all": true }
// Does selector [punctuation.definition.string.begin] NOT match scope at selection (for all selections)?,
{ "key": "eol_selector" , "operator": "not_equal" , "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }
// Does selector [string.quoted.double - punctuation.definition.string.end] NOT match scope at EOL (for all selections)?
]
Context for Backspace: run_macro_file {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": "'$", "match_all": true }
// Does regex "'$" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^'", "match_all": true }
// Does regex "^'" match any of the text between left edge of selection and EOL (for all selections)?,
{ "key": "selector" , "operator": "not_equal" , "operand": "punctuation.definition.string.begin", "match_all": true }
// Does selector [punctuation.definition.string.begin] NOT match scope at selection (for all selections)?,
{ "key": "eol_selector" , "operator": "not_equal" , "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }
// Does selector [string.quoted.single - punctuation.definition.string.end] NOT match scope at EOL (for all selections)?
]
Context for Backspace: run_macro_file {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": "\\($", "match_all": true }
// Does regex "\\($" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^\\)", "match_all": true }
// Does regex "^\\)" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for Backspace: run_macro_file {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": "\\[$", "match_all": true }
// Does regex "\\[$" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^\\]", "match_all": true }
// Does regex "^\\]" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for Backspace: run_macro_file {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}
"context": [
{ "key": "setting.auto_match_enabled" }
// Is the View-setting [auto_match_enabled] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": "\\{$", "match_all": true }
// Does regex "\\{$" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^\\}", "match_all": true }
// Does regex "^\\}" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for Tab: auto_complete {“commit_single”: true, “default”: “t”, “mini”: true}
"context": [
{ "key": "auto_complete_visible" , "operand": false }
// Is auto-complete, mini-auto-complete or async-auto-complete popup NOT visible?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "setting.tab_completion" }
// Is the View-setting [tab_completion] == true?,
{ "key": "preceding_text" , "operator": "regex_match", "operand": ".*\\w", "match_all": true }
// Does regex ".*\\w" fully match the text between BOL and the left edge of selection (for all selections)?
]
Context for Tab: auto_complete {“default”: “t”, “snippets_only”: true}
"context": [
{ "key": "auto_complete_visible" , "operand": false }
// Is auto-complete, mini-auto-complete or async-auto-complete popup NOT visible?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "setting.tab_completion", "operand": false }
// Is the View-setting [tab_completion] == false?,
{ "key": "preceding_text" , "operator": "regex_match", "operand": ".*\\w", "match_all": true }
// Does regex ".*\\w" fully match the text between BOL and the left edge of selection (for all selections)?
]
Context for Tab: expand_snippet
"context": [
{ "key": "has_snippet" }
// Can preceding word trigger a Snippet?
]
Context for Tab: reindent
"context": [
{ "key": "setting.auto_indent" }
// Is the View-setting [auto_indent] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_match", "operand": "^$", "match_all": true }
// Does regex "^$" fully match the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_match", "operand": "^$", "match_all": true }
// Does regex "^$" fully match the text between left edge of selection and EOL (for all selections)?
]
Context for Tab: indent
"context": [
{ "key": "text", "operator": "regex_contains", "operand": "\n" }
// Does regex "\n" match any of the selected text?
]
Context for Tab: move {“by”: “lines”, “forward”: true}
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?
]
Context for Tab: next_field
"context": [
{ "key": "has_next_field" }
// Is selection in Snippet field list with subsequent fields?
]
Context for Tab: commit_completion
"context": [
{ "key": "auto_complete_visible" }
// Is auto-complete, mini-auto-complete or async-auto-complete popup visible?
]
Context for Shift-Tab: unindent
"context": [
{ "key": "setting.shift_tab_unindent" }
// Is the View-setting [shift_tab_unindent] == true?
]
Context for Shift-Tab: unindent
"context": [
{ "key": "preceding_text", "operator": "regex_match", "operand": "^[\t ]*" }
// Does regex "^[\t ]*" fully match the text between BOL and the left edge of selection?
]
Context for Shift-Tab: unindent
"context": [
{ "key": "text", "operator": "regex_contains", "operand": "\n" }
// Does regex "\n" match any of the selected text?
]
Context for Shift-Tab: move {“by”: “lines”, “forward”: false}
"context": [
{ "key": "overlay_visible" }
// Is any Overlay or Quick Panel visible?
]
Context for Shift-Tab: prev_field
"context": [
{ "key": "has_prev_field" }
// Is selection in Snippet field list with previous fields?
]
Context for Enter: select
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?
]
Context for Enter: commit_completion
"context": [
{ "key": "auto_complete_visible" }
// Is auto-complete, mini-auto-complete or async-auto-complete popup visible?,
{ "key": "setting.auto_complete_commit_on_tab", "operand": false }
// Is the View-setting [auto_complete_commit_on_tab] == false?
]
Context for Enter: run_macro_file {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}
"context": [
{ "key": "setting.auto_indent" }
// Is the View-setting [auto_indent] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": "\\{$", "match_all": true }
// Does regex "\\{$" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^\\}", "match_all": true }
// Does regex "^\\}" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for Enter: auto_indent_tag
"context": [
{ "key": "setting.auto_indent" }
// Is the View-setting [auto_indent] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "selector" , "operand": "punctuation.definition.tag.begin", "match_all": true }
// Does selector [punctuation.definition.tag.begin] match scope at selection (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": ">$", "match_all": true }
// Does regex ">$" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^</", "match_all": true }
// Does regex "^</" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for Enter: insert {“characters”: “n* “}
"context": [
{ "key": "setting.auto_indent" }
// Is the View-setting [auto_indent] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "selector" , "operand": "source comment", "match_all": true }
// Does selector [source comment] match scope at selection (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": "^\\s*\\*", "match_all": true }
// Does regex "^\\s*\\*" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_match" , "operand": "(?!/).*", "match_all": true }
// Does regex "(?!/).*" fully match the text between left edge of selection and EOL (for all selections)?,
{ "key": "is_javadoc" , "match_all": true }
// Is selection within a Javadoc comment (for all selections)?
]
Context for Enter: insert {“characters”: “n * “}
"context": [
{ "key": "setting.auto_indent" }
// Is the View-setting [auto_indent] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "selector" , "operand": "source comment", "match_all": true }
// Does selector [source comment] match scope at selection (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": "^\\s*/\\*[*!]", "match_all": true }
// Does regex "^\\s*/\\*[*!]" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_match" , "operand": "(?!/).*", "match_all": true }
// Does regex "(?!/).*" fully match the text between left edge of selection and EOL (for all selections)?,
{ "key": "is_javadoc" , "match_all": true }
// Is selection within a Javadoc comment (for all selections)?
]
Context for Enter: select
"context": [
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?,
{ "key": "panel_type" , "operand": "input" }
// Does focused Panel's type == "input"?
]
Context for Enter: select
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?
]
Context for Enter: find_next
"context": [
{ "key": "panel" , "operand": "find" }
// Is current visible Panel's name == "find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Enter: find_next
"context": [
{ "key": "panel" , "operand": "replace" }
// Is current visible Panel's name == "replace"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Enter: hide_panel
"context": [
{ "key": "panel" , "operand": "incremental_find" }
// Is current visible Panel's name == "incremental_find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Enter: find_all
"context": [
{ "key": "panel" , "operand": "find_in_files" }
// Is current visible Panel's name == "find_in_files"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Shift-Enter: select {“extend”: true}
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?,
{ "key": "overlay_name" , "operand": "goto" }
// Does current Overlay's name == "goto"?
]
Context for Shift-Enter: run_macro_file {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}
"context": [
{ "key": "setting.auto_indent" }
// Is the View-setting [auto_indent] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": "\\{$", "match_all": true }
// Does regex "\\{$" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^\\}", "match_all": true }
// Does regex "^\\}" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for Shift-Enter: auto_indent_tag
"context": [
{ "key": "setting.auto_indent" }
// Is the View-setting [auto_indent] == true?,
{ "key": "selection_empty" , "match_all": true }
// Is selection empty (for all selections)?,
{ "key": "selector" , "operand": "punctuation.definition.tag.begin", "match_all": true }
// Does selector [punctuation.definition.tag.begin] match scope at selection (for all selections)?,
{ "key": "preceding_text" , "operator": "regex_contains", "operand": ">$", "match_all": true }
// Does regex ">$" match any of the text between BOL and the left edge of selection (for all selections)?,
{ "key": "following_text" , "operator": "regex_contains", "operand": "^</", "match_all": true }
// Does regex "^</" match any of the text between left edge of selection and EOL (for all selections)?
]
Context for Shift-Enter: find_prev
"context": [
{ "key": "panel" , "operand": "find" }
// Is current visible Panel's name == "find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Shift-Enter: find_prev
"context": [
{ "key": "panel" , "operand": "replace" }
// Is current visible Panel's name == "replace"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Shift-Enter: chain {“commands”: [{“command”: “find_prev”}, {“command”: “hide_panel”}]}
"context": [
{ "key": "panel" , "operand": "incremental_find" }
// Is current visible Panel's name == "incremental_find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Ctrl-Enter: select {“clear_to_right”: true, “extend”: true}
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?,
{ "key": "overlay_name" , "operand": "goto" }
// Does current Overlay's name == "goto"?
]
Context for Ctrl-Enter: run_macro_file {"file": "res://Packages/Default/Add Line.sublime-macro"}
"context": [
{ "key": "overlay_has_focus", "operand": false }
// Does an Overlay or Quick Panel NOT have focus?
]
Context for Alt-Enter: select {“replace”: true}
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?,
{ "key": "overlay_name" , "operand": "goto" }
// Does current Overlay's name == "goto"?
]
Context for Alt-Enter: find_all {“close_panel”: true}
"context": [
{ "key": "panel" , "operand": "find" }
// Is current visible Panel's name == "find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Alt-Enter: find_all {“close_panel”: true}
"context": [
{ "key": "panel" , "operand": "replace" }
// Is current visible Panel's name == "replace"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Alt-Enter: find_all {“close_panel”: true}
"context": [
{ "key": "panel" , "operand": "incremental_find" }
// Is current visible Panel's name == "incremental_find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Alt-Enter: find_all
"context": [
{ "key": "panel" , "operand": "find_in_files" }
// Is current visible Panel's name == "find_in_files"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Ctrl-Alt-Enter: replace_all {“close_panel”: true}
"context": [
{ "key": "panel" , "operand": "replace" }
// Is current visible Panel's name == "replace"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Ctrl-Alt-Enter: replace_all
"context": [
{ "key": "panel" , "operand": "find_in_files" }
// Is current visible Panel's name == "find_in_files"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Ctrl-Space: move {“by”: “lines”, “forward”: true}
"context": [
{ "key": "auto_complete_primed" }
// Is actual auto-complete popup visible?
]
Context for Escape: single_selection
"context": [
{ "key": "num_selections", "operator": "not_equal" }
// Number of selections != 1?
]
Context for Escape: clear_fields
"context": [
{ "key": "has_next_field" }
// Is selection in Snippet field list with subsequent fields?
]
Context for Escape: clear_fields
"context": [
{ "key": "has_prev_field" }
// Is selection in Snippet field list with previous fields?
]
Context for Escape: hide_panel {“cancel”: true}
"context": [
{ "key": "panel_visible" }
// Is any Panel visible?
]
Context for Escape: hide_overlay
"context": [
{ "key": "overlay_visible" }
// Is any Overlay or Quick Panel visible?,
{ "key": "panel_has_focus", "operand": false }
// Are there no Panels visible with focus?
]
Context for Escape: hide_auto_complete
"context": [
{ "key": "auto_complete_visible" }
// Is auto-complete, mini-auto-complete or async-auto-complete popup visible?
]
Context for Escape: hide_popup
"context": [
{ "key": "popup_visible" }
// Is any Popup currently being displayed?
]
Context for Shift-Escape: show_panel {“panel”: “output.exec”}
"context": [
{ "key": "panel_visible", "operand": false }
// Are there no Panels visible?
]
9.1.5.1. Tab Key
The Tab key’s behavior is context sensitive. The below are in top-to-bottom order from within the default key map, so the top-most items are the most general, and the bottom-most items are the most specific, overriding the upper choices, but only when they apply.
Insert ‘t’ into View with focus.
Unless:
an auto-complete pop-up is NOT visible, and
no text is selected, and
tab_completion setting == true, and
caret is immediately after a word character (regex
\w)then, Tab executes
“auto_complete”, “args”: {“mini”: true, “default”: “t”, “commit_single”: true}
Unless:
same as above except tab_completion setting == false
then, Tab executes
“auto_complete”, “args”: {“snippets_only”: true, “default”: “t”}
Unless:
caret is in a context in which the keymap context condition “has_snippet” == true
then Tab executes
expand_snippetcommand with no arguments.
Unless:
setting.auto_indent == true, and
no text is selected for all carets, and
all carets are on a blank line (preceded and followed by empty strings), and
then Tab executes
reindentwith no arguments.
Unless:
multiple lines are selected (selected text contains ‘n’)
then Tab executes
indentwith no arguments.
Unless:
overlay_has_focus == true
then Tab executes
movewith “args”: {“by”: “lines”, “forward”: true}.
Unless:
has_next_field == true
then Tab executes
next_fieldwith no arguments.
Unless:
auto_complete_visible == true
then Tab executes
commit_completionwith no arguments.
9.1.5.2. Shift Tab
The Shift-Tab is also context sensitive. In order from top-to-bottom in keymap (same ramifications as above):
Insert ‘t’ into View with focus.
Unless:
shift_tab_unindent == true
then Tab executes
unindentwith no arguments.
Unless:
preceding_text matches
^[\t ]*(caret is at BOL or preceeded only by whitespace)then Tab executes
unindentwith no arguments.
Unless:
multiple lines are selected (selected text contains ‘n’)
then Tab executes
unindentwith no arguments.
Unless:
overlay_visible == true
then Tab executes
movewith “args”: {“by”: “lines”, “forward”: false}.
Unless:
has_prev_field == true
then Tab executes
prev_fieldwith no arguments (snippet or panel).
9.1.6. Keypad Keys
For keyboards that have a keypad, you can also map these keys. On Windows systems,
keypad0-keypad9 keys are generally not useful to map in Sublime Text
because most, if not all of them, are mapped by the OS to do other things, which
makes them “appear” to be number keys, arrow keys, Home, End,
Insert, Delete, PgUp and PgDn keys, etc. depending on the
state of the NumLock mode. For example, binding Alt-KeypadN (where ‘N’
is [0-9]) keys does not work in Windows because the OS hooks these
keypresses to produce input characters outside of the ASCII range. Example:
Alt-Keypad0
Alt-Keypad2
Alt-Keypad2
Alt-Keypad5
followed by releasing the Alt key produces á. Many otherwise-inaccessible
characters, including many Unicode characters, can be produced on the keyboard this
way.
Thus, while these keypresses are listed below, they are not recommended to be mapped on Windows because the OS will most likely interfere with your use of them.
Also, when NumLock is OFF, the keypad_period key is mapped to the
various ...-Del keypresses.
However, keypresses with:
keypad_period (NumLock ON)
keypad_divide
keypad_multiply
keypad_minus
keypad_plus
keypad_enter
are mapped by Sublime Text and work reliably and can be mapped or re-mapped as you see fit.
Key |
A |
C |
S |
Command |
|---|---|---|---|---|
keypad0-9 |
when |
|||
keypad0-9 |
when |
|||
keypad0-9 |
x |
when |
||
keypad0-9 |
x |
when |
||
keypad0-9 |
x |
when |
||
keypad0-9 |
x |
when |
||
keypad0-9 |
x |
x |
when |
|
keypad0-9 |
x |
x |
when |
|
keypad0-9 |
x |
when |
Key:
A = Alt
C = Ctrl
S = Shift
Ctxt = Context
Key |
A |
C |
S |
Ctxt |
Command |
Args |
|---|---|---|---|---|---|---|
keypad0 |
||||||
keypad0 |
x |
|||||
keypad0 |
x |
|||||
keypad0 |
x |
x |
||||
keypad0 |
x |
|||||
keypad0 |
x |
x |
||||
keypad0 |
x |
x |
||||
keypad0 |
x |
x |
x |
|||
keypad1 |
||||||
keypad1 |
x |
|||||
keypad1 |
x |
|||||
keypad1 |
x |
x |
||||
keypad1 |
x |
|||||
keypad1 |
x |
x |
||||
keypad1 |
x |
x |
||||
keypad1 |
x |
x |
x |
|||
keypad2 |
||||||
keypad2 |
x |
|||||
keypad2 |
x |
|||||
keypad2 |
x |
x |
||||
keypad2 |
x |
|||||
keypad2 |
x |
x |
||||
keypad2 |
x |
x |
||||
keypad2 |
x |
x |
x |
|||
keypad3 |
||||||
keypad3 |
x |
|||||
keypad3 |
x |
|||||
keypad3 |
x |
x |
||||
keypad3 |
x |
|||||
keypad3 |
x |
x |
||||
keypad3 |
x |
x |
||||
keypad3 |
x |
x |
x |
|||
keypad4 |
||||||
keypad4 |
x |
|||||
keypad4 |
x |
|||||
keypad4 |
x |
x |
||||
keypad4 |
x |
|||||
keypad4 |
x |
x |
||||
keypad4 |
x |
x |
||||
keypad4 |
x |
x |
x |
|||
keypad5 |
||||||
keypad5 |
x |
|||||
keypad5 |
x |
|||||
keypad5 |
x |
x |
||||
keypad5 |
x |
|||||
keypad5 |
x |
x |
||||
keypad5 |
x |
x |
||||
keypad5 |
x |
x |
x |
|||
keypad6 |
||||||
keypad6 |
x |
|||||
keypad6 |
x |
|||||
keypad6 |
x |
x |
||||
keypad6 |
x |
|||||
keypad6 |
x |
x |
||||
keypad6 |
x |
x |
||||
keypad6 |
x |
x |
x |
|||
keypad7 |
||||||
keypad7 |
x |
|||||
keypad7 |
x |
|||||
keypad7 |
x |
x |
||||
keypad7 |
x |
|||||
keypad7 |
x |
x |
||||
keypad7 |
x |
x |
||||
keypad7 |
x |
x |
x |
|||
keypad8 |
||||||
keypad8 |
x |
|||||
keypad8 |
x |
|||||
keypad8 |
x |
x |
||||
keypad8 |
x |
|||||
keypad8 |
x |
x |
||||
keypad8 |
x |
x |
||||
keypad8 |
x |
x |
x |
|||
keypad9 |
||||||
keypad9 |
x |
|||||
keypad9 |
x |
|||||
keypad9 |
x |
x |
||||
keypad9 |
x |
|||||
keypad9 |
x |
x |
||||
keypad9 |
x |
x |
||||
keypad9 |
x |
x |
x |
|||
keypad_period |
||||||
keypad_period |
x |
|||||
keypad_period |
x |
|||||
keypad_period |
x |
x |
||||
keypad_period |
x |
|||||
keypad_period |
x |
x |
||||
keypad_period |
x |
x |
||||
keypad_period |
x |
x |
x |
|||
keypad_divide |
||||||
keypad_divide |
x |
|||||
keypad_divide |
x |
|||||
keypad_divide |
x |
x |
||||
keypad_divide |
x |
|||||
keypad_divide |
x |
x |
||||
keypad_divide |
x |
x |
||||
keypad_divide |
x |
x |
x |
|||
keypad_multiply |
||||||
keypad_multiply |
x |
|||||
keypad_multiply |
x |
|||||
keypad_multiply |
x |
x |
||||
keypad_multiply |
x |
|||||
keypad_multiply |
x |
x |
||||
keypad_multiply |
x |
x |
||||
keypad_multiply |
x |
x |
x |
|||
keypad_minus |
||||||
keypad_minus |
x |
|||||
keypad_minus |
x |
decrease_font_size |
||||
keypad_minus |
x |
x |
||||
keypad_minus |
x |
jump_back |
||||
keypad_minus |
x |
x |
jump_forward |
|||
keypad_minus |
x |
x |
||||
keypad_minus |
x |
x |
x |
|||
keypad_plus |
||||||
keypad_plus |
x |
|||||
keypad_plus |
x |
increase_font_size |
||||
keypad_plus |
x |
x |
decrease_font_size |
|||
keypad_plus |
x |
|||||
keypad_plus |
x |
x |
||||
keypad_plus |
x |
x |
||||
keypad_plus |
x |
x |
x |
|||
keypad_enter |
insert |
{"characters": "\n"} |
||||
keypad_enter |
select |
|||||
keypad_enter |
commit_completion |
|||||
keypad_enter |
select |
|||||
keypad_enter |
select |
|||||
keypad_enter |
find_next |
|||||
keypad_enter |
find_next |
|||||
keypad_enter |
hide_panel |
|||||
keypad_enter |
find_all |
|||||
keypad_enter |
x |
insert |
{"characters": "\n"} |
|||
keypad_enter |
x |
select |
{"extend": true} |
|||
keypad_enter |
x |
find_prev |
||||
keypad_enter |
x |
find_prev |
||||
keypad_enter |
x |
chain |
{"commands": [{"command": "find_prev"}, {"command": "hide_panel"}]} |
|||
keypad_enter |
x |
select |
{"clear_to_right": true, "extend": true} |
|||
keypad_enter |
x |
run_macro_file |
|
|||
keypad_enter |
x |
x |
run_macro_file |
|
||
keypad_enter |
x |
select |
{"replace": true} |
|||
keypad_enter |
x |
find_all |
{"close_panel": true} |
|||
keypad_enter |
x |
find_all |
{"close_panel": true} |
|||
keypad_enter |
x |
find_all |
{"close_panel": true} |
|||
keypad_enter |
x |
find_all |
||||
keypad_enter |
x |
x |
||||
keypad_enter |
x |
x |
replace_all |
{"close_panel": true} |
||
keypad_enter |
x |
x |
replace_all |
|||
keypad_enter |
x |
x |
x |
|||
clear |
||||||
clear |
x |
|||||
clear |
x |
|||||
clear |
x |
x |
||||
clear |
x |
|||||
clear |
x |
x |
||||
clear |
x |
x |
||||
clear |
x |
x |
x |
Context for Keypad_Enter: select
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?
]
Context for Keypad_Enter: commit_completion
"context": [
{ "key": "auto_complete_visible" }
// Is auto-complete, mini-auto-complete or async-auto-complete popup visible?,
{ "key": "setting.auto_complete_commit_on_tab", "operand": false }
// Is the View-setting [auto_complete_commit_on_tab] == false?
]
Context for Keypad_Enter: select
"context": [
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?,
{ "key": "panel_type" , "operand": "input" }
// Does focused Panel's type == "input"?
]
Context for Keypad_Enter: select
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?
]
Context for Keypad_Enter: find_next
"context": [
{ "key": "panel" , "operand": "find" }
// Is current visible Panel's name == "find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Keypad_Enter: find_next
"context": [
{ "key": "panel" , "operand": "replace" }
// Is current visible Panel's name == "replace"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Keypad_Enter: hide_panel
"context": [
{ "key": "panel" , "operand": "incremental_find" }
// Is current visible Panel's name == "incremental_find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Keypad_Enter: find_all
"context": [
{ "key": "panel" , "operand": "find_in_files" }
// Is current visible Panel's name == "find_in_files"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Shift-Keypad_Enter: select {“extend”: true}
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?,
{ "key": "overlay_name" , "operand": "goto" }
// Does current Overlay's name == "goto"?
]
Context for Shift-Keypad_Enter: find_prev
"context": [
{ "key": "panel" , "operand": "find" }
// Is current visible Panel's name == "find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Shift-Keypad_Enter: find_prev
"context": [
{ "key": "panel" , "operand": "replace" }
// Is current visible Panel's name == "replace"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Shift-Keypad_Enter: chain {“commands”: [{“command”: “find_prev”}, {“command”: “hide_panel”}]}
"context": [
{ "key": "panel" , "operand": "incremental_find" }
// Is current visible Panel's name == "incremental_find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Ctrl-Keypad_Enter: select {“clear_to_right”: true, “extend”: true}
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?,
{ "key": "overlay_name" , "operand": "goto" }
// Does current Overlay's name == "goto"?
]
Context for Ctrl-Keypad_Enter: run_macro_file {"file": "res://Packages/Default/Add Line.sublime-macro"}
"context": [
{ "key": "overlay_has_focus", "operand": false }
// Does an Overlay or Quick Panel NOT have focus?
]
Context for Alt-Keypad_Enter: select {“replace”: true}
"context": [
{ "key": "overlay_has_focus" }
// Does an Overlay or Quick Panel have focus?,
{ "key": "overlay_name" , "operand": "goto" }
// Does current Overlay's name == "goto"?
]
Context for Alt-Keypad_Enter: find_all {“close_panel”: true}
"context": [
{ "key": "panel" , "operand": "find" }
// Is current visible Panel's name == "find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Alt-Keypad_Enter: find_all {“close_panel”: true}
"context": [
{ "key": "panel" , "operand": "replace" }
// Is current visible Panel's name == "replace"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Alt-Keypad_Enter: find_all {“close_panel”: true}
"context": [
{ "key": "panel" , "operand": "incremental_find" }
// Is current visible Panel's name == "incremental_find"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Alt-Keypad_Enter: find_all
"context": [
{ "key": "panel" , "operand": "find_in_files" }
// Is current visible Panel's name == "find_in_files"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Ctrl-Alt-Keypad_Enter: replace_all {“close_panel”: true}
"context": [
{ "key": "panel" , "operand": "replace" }
// Is current visible Panel's name == "replace"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
Context for Ctrl-Alt-Keypad_Enter: replace_all
"context": [
{ "key": "panel" , "operand": "find_in_files" }
// Is current visible Panel's name == "find_in_files"?,
{ "key": "panel_has_focus" }
// Is any Panel visible with focus?
]
9.1.7. Leading Key: Ctrl-J
In earlier versions of Sublime Text, the default key binding for Ctrl-J
was mapped to the join_lines command, which is similar to moving the caret to the
end of the current line and hitting the Delete key, but it reduces all the
whitespace between the two lines (including the newline between lines) to exactly 1
space, and the caret need not be at the end of the line when it is performed.
This key binding was moved to Ctrl-Shift-J in order to free up
the Ctrl-J key binding to be the leading key in a number of keypress
sequences. ["ctrl+j", "ctrl+j"] now opens a message box that explains how the
previous binding of Ctrl-J (join lines) was switched to Ctrl-Shift-J.
All of the remaining key sequences beginning with Ctrl-J are now mapped to
Side-by-Side Editing Commands.
In the table below, we use the term “select” in the same way we use that term in Side-by-Side Editing, indicating that “selected” Sheets are temporarily participating (selected) in side-by-side editing. The term “select” is also used with the same meaning in the names of the Commands that these key sequences are mapped to (in the order they appear in the table):
unselect_others
unselect_to_left
select_to_left
unselect_to_right
select_to_right
Keypresses with Shift as a modifier ADD an adjacent View to the set of “selected” Views with the arrow direction determining which View. Un-shifted key presses REMOVE an adjacent View from the set of “selected” Views.
Key:
A = Alt
C = Ctrl
S = Shift
Ctxt = Context
Key |
A |
C |
S |
Ctxt |
Command |
Args |
|---|---|---|---|---|---|---|
j |
x |
primary_j_changed |
||||
up |
x |
unselect_others |
||||
left |
x |
unselect_to_left |
||||
left |
x |
x |
select_to_left |
|||
right |
x |
unselect_to_right |
||||
right |
x |
x |
select_to_right |
|||
pageup |
x |
focus_to_left |
||||
pagedown |
x |
focus_to_right |
9.1.8. Leading Key: Ctrl-K
In the commands in the below table, “pane” and “group” both mean View Group. In the order presented in the table:
new_pane (no args)
new_pane (“args”: {“move”: false})
close_pane
focus_neighboring_group (“args”: {“forward”: false})
move_to_neighboring_group (“args”: {“forward”: false})
focus_neighboring_group (no args)
move_to_neighboring_group (no args)
Key:
A = Alt
C = Ctrl
S = Shift
Ctxt = Context
Key |
A |
C |
S |
Ctxt |
Command |
Args |
|---|---|---|---|---|---|---|
1 |
x |
fold_by_level |
{"level": 1} |
|||
2 |
x |
fold_by_level |
{"level": 2} |
|||
3 |
x |
fold_by_level |
{"level": 3} |
|||
4 |
x |
fold_by_level |
{"level": 4} |
|||
5 |
x |
fold_by_level |
{"level": 5} |
|||
6 |
x |
fold_by_level |
{"level": 6} |
|||
7 |
x |
fold_by_level |
{"level": 7} |
|||
8 |
x |
fold_by_level |
{"level": 8} |
|||
9 |
x |
fold_by_level |
{"level": 9} |
|||
0 |
x |
unfold_all |
||||
a |
x |
select_to_mark |
||||
b |
x |
toggle_side_bar |
||||
c |
x |
show_at_center |
||||
d |
x |
find_under_expand_skip |
||||
g |
x |
clear_bookmarks |
{"name": "mark"} |
|||
j |
x |
unfold_all |
||||
k |
x |
run_macro_file |
|
|||
l |
x |
lower_case |
||||
t |
x |
fold_tag_attributes |
||||
u |
x |
upper_case |
||||
v |
x |
paste_from_history |
||||
w |
x |
delete_to_mark |
||||
x |
x |
swap_with_mark |
||||
y |
x |
yank |
||||
z |
x |
revert_hunk |
||||
z |
x |
x |
revert_modification |
|||
/ |
x |
toggle_inline_diff |
||||
; |
x |
toggle_inline_diff |
{"prefer_hide": true} |
|||
] |
x |
reindent |
{"single_line": true} |
|||
up |
x |
new_pane |
||||
up |
x |
x |
new_pane |
{"move": false} |
||
down |
x |
close_pane |
||||
left |
x |
focus_neighboring_group |
{"forward": false} |
|||
left |
x |
x |
move_to_neighboring_group |
{"forward": false} |
||
right |
x |
focus_neighboring_group |
||||
right |
x |
x |
move_to_neighboring_group |
|||
backspace |
x |
run_macro_file |
|
|||
space |
x |
set_mark |
Note
Regarding these commands, see The Kill Ring for more information.
delete_to_mark
yank
Regarding these commands, see Incremental Diff for more details.
revert_hunk
revert_modification
toggle_inline_diff