Vintage mode in Sublime text provide the vim enviroment.
Enable vintage mode
In Preferences>Setting>User, add the following codes
{
"color_scheme": "Packages/Color Scheme - Default/Monokai.sublime-color-scheme",
"font_size": 10,
"ignored_packages":
[
],
"theme": "Default.sublime-theme",
"vintage_ctrl_keys": true
}
Default Ctrl key bindings in Sublime
- Ctrl+[: Escape
- Ctrl+R: Redo
- Ctrl+Y: Scroll down one line
- Ctrl+E: Scroll up one line
- Ctrl+F: Page Down
- Ctrl+B: Page Up
For my own convinience, I coustomerized the escape key to be jj by adding the following codes in preferences>key bindings>usr
Custom escape key, in key binding
{ "keys": ["j", "j"], "command": "exit_insert_mode",
"context":
[
{ "key": "setting.command_mode", "operand": false },
{ "key": "setting.is_widget", "operand": false }
]
}
Vim cheat sheet
Navigation
| Key |
Description |
| h b B ^ 0 |
h-previous character; b-pervious work; B-pervious work and skip punctuation; ^-first non-blank character; 0-begining of line; |
| l e w E W $ |
l-next character; e-end of word; w-begining of next word; E-end of Word; W-begining of next WORD; $-end of line |
| k Ctrl+u Ctrl+b gg |
k-up 1 line; Ctrl+u-up 1/2 page; Ctrl+b-up 1 page; gg-first line; |
| j Ctrl+d Ctrl+f G |
j-down 1 line; Ctrl+d-down 1/2 page; Ctrl+f-down 1 page; G-last line; |
| j Ctrl+d Ctrl+f G |
j-down 1 line; Ctrl+d-down 1/2 page; Ctrl+f-down 1 page; G-last line; |
| ngg |
Goto line n |
| Shift + * |
jump to next word matching cursor (case insensitive) |
| Shift + # |
jump to previous word matching cursor |
| Shift + H |
move to high (header) part of screen |
| Shift + M |
move to middle of screen |
| zz |
center screen on cursor |
| zt |
allgn top of screen on cursor |
| zb |
allgn top of center screen on cursor |
| Shift + L |
move to lower part of screen |
| Shift + } |
Go next paragraph empty space |
| Shift + { |
Go previous paragraph empty space |
| Shift + % |
Jump to open/close (), {}, or [] |
Bookmark
| m [a-z0-9] |
(book)mark current cursor position with register (any key [a-z0-9]) |
| ‘ [a-z0-9] |
Return to marked position [a-z0-9] (first non-blank character in line) |
| Ctrl + + g |
Find All instances |
| ` [a-z0-9] |
jump to line and column of mark |
| Ctrl+F2 |
Toggle Bookmark (with indicator) |
| F2 |
Jump to Next bookmark |
| Shift+F2 |
Jump to Previous bookmark |
| Shift+Ctrl+F2 |
Clear all bookmarks |
Insert mode
| Key |
Description |
| s |
delete character under cursor |
| i |
Insert infront cursor |
| a |
Append after cursor |
| I |
Insert infront of line (tip: left shift indicates direction) |
| A |
Append after line end (tip: right shift indicates direction) |
| o |
Open newline below |
| O |
Open newline above |
| c |
Change/cut (i.e. cw = deletes word) |
| caw |
Change/cut all word |
| cc |
Change/cut entire line |
| ci” |
Change inner quote content (can be anywhere before for quotes, but has to be within for parenthses) |
Selecting
| Key |
Description |
| v |
switch into visual mode |
| V |
selects line (goes into visual mode) |
| vt, |
select until the comma |
| vf, |
select until with the comma |
| Vngg |
select current line up to line number n |
| Vnj |
select current + down n lines |
| Alt + F3 |
select all under cursor |
Undo Redo
| Key |
Description |
| u |
undo |
| Shift + U |
undo all changes to current line |
| Ctrl + r |
redo |
| . |
repeat last action |
Finding
| Key |
Description |
| fx |
find x and land on it (current line only) |
| Fx |
Jump back on x (opposite of above, current line only) |
| tx |
‘til x but land before it (current line only) |
| Tx |
Jump back ‘til x (opposite of above, current line only) |
| / |
enter find |
| * |
set find all word & find next |
| n |
find next, alternatively using F3 |
| N |
find previous alternatively using Shift + F3 |
| / |
enter find |
| / |
enter find |
| : 3,9s/oldstring.newstring/g s for substitude |
|
| %s/oldstring.newstring/g s for substitude s for substitude |
|
| %s/oldstring.newstring/gc s for substitude |
|
Delete Copy Paste
| Key |
Description |
| r |
replace single character |
| x |
delete single character |
| X |
delete previous single character |
| d |
delete (cuts) |
| dd |
delete (cuts) entire line |
| D |
delete until the end of the line |
| diw |
delete (& copy) entire word |
| daw |
delete (& copy) entire word with trailing space |
| d3w |
delete (& copy) 3 words (starting from wherever cursor is) |
| num dd |
deletes num lines |
| dit |
delete inner tag content |
| y |
yank (copy) selection |
| yiw |
yank (copy) the current word |
| yy |
yank entire line |
| p |
paste after cursor |
| P |
paste before cursor |
| d num Enter |
deletes num lines from current position in line to current position (not entire line) |
| y num p |
copies line num times |
| “register y |
yank to register (use :reg to view register) |
| “register p |
paste from register (use :reg to view register) |
| “0 |
default register. e.g. copy a line, delete(cut) a line, paste the copied line: yy pp “0p |
| Key |
Description |
| == |
auto-indent current line |
| « |
indent to left |
| » |
indent to right |
| ~ |
Changes the case of current character |
| gu |
Changes the selection from upper to lower |
| gU |
Changes the selection from lower to upeer |
Sublime shortcuts
General
| Key |
Description |
| Ctrl + p |
Quick-open files by name |
| Ctrl + ku |
uppercase |
| Ctrl + kl |
lowercase |
| Ctrl + kt |
hide (fold) all tag attributes |
| Ctrl + k0 |
expand all code |
| Ctrl + k1 |
collapse/fold all 1 tab indentations |
| Ctrl + k2 |
collapse/fold all 2 tab indentations |
| Ctrl + kb |
toggle side bar |
| Ctrl + kv |
paste from history |
| Ctrl + kc |
scroll cursor to centre |
| Ctrl + kc |
scroll cursor to centre |
Split window
| Key |
Description |
| Shift + Alt + 2 |
Split view into two windows (groups) |
| Ctrl + 2 |
Jump to window 2 |
| Shift + Ctrl + 2 |
Move file to group 2 |