-
Notifications
You must be signed in to change notification settings - Fork 16
/
TODO.md
1758 lines (1683 loc) · 71.6 KB
/
TODO.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
vi filename - open file
set showmode
u ctrl-r
ZZ
:q! - discard changes
:e! reloads the original version
:help
:help ctrl-a
:help v_ctrl-a
:help i_CTRL_H
:help -t
:help 'number'
:help i_<esc>
:help i_<Up>
:help pattern<Ctrl-D>
:help pattern<Tab>
:help grep pattern
:cn - next match
:cprev :cN - previous match
:cfirst
:clast
:copen
:cclose
ge vs e
gE vs E
B vs W
b vs w
fh fy
3f"
H M L ( Home, Middle, Last )
:set ruler
:set ignorecase
/one /two /three /<UP>
3*
/the\> only find words that end in the - \>
g* g# - partial words
#### 03
ctrl-] jump on tag
ctrl-t (pop tag - goes to previous position)
ctrl-o (jump to older) does the same thing
. searches for any character
:jumps
`a
:marks
You will notice a few special marks. These include:
' The cursor position before doing a jump
" The cursor position when last editing the file
[ Start of the last change
] End of the last change
d4w
d2e
d$
x stands for dl (delete character under the cursor)
X stands for dh (delete character left of the cursor)
D stands for d$ (delete to end of the line)
C stands for c$ (change to end of the line)
s stands for cl (change one character)
S stands for cc (change a whole line)
------------------------------
f< find first < --->
df> delete to > -->
f< find next < --------->
. repeat df> --->
f< find next < ------------->
. repeat df> -->
------------------------------
name Q1 Q2 Q3
pierre 123 455 234
john 0 90 39
steve 392 63 334
Insert Mode
CTRL-U
CTRL-W
das
cas
yas
vas
dis
cis
yis
vis
dip
cip
yip
vip
dap
cap
yap
vap
dab
cab
yab
vab
daB
caB
yaB
vaB
dib
cib
yib
vib
diB
ciB
yiB
viB
dt>
dT<
df>
dF>
CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^*
CTRL-W c - close current window
:hid[e]
CTRL-W O - make it only window on screen
CTRL-W T - go to top left window
CTRL-W B - go to bottom right window
CTRL-W r - rotate windows
CTRL-W R - alternate direction
CTRL-W _
CTRL-W |
CTRL-W ^ Does ":split #", split window in two and edit alternate file.
CTRL-W +
CTRL-W >
CTRL-W <
When a count is given, it becomes ":split #N", split window
and edit buffer N.
1. Insert mode *insert-index*
i_CTRL-@ previously inserted text and stop
insert
i_CTRL-A CTRL-A insert previously inserted text
CTRL-B not used i_CTRL-B-gone
i_CTRL-C CTRL-C quit insert mode, without checking for
abbreviation, unless 'insertmode' set.
i_CTRL-D CTRL-D delete one shiftwidth of indent in the current
line
i_CTRL-E CTRL-E insert the character which is below the cursor
CTRL-F not used (but by default it's in 'cinkeys' to
re-indent the current line)
i_CTRL-G_j CTRL-G CTRL-J line down, to column where inserting started
i_CTRL-G_j CTRL-G j line down, to column where inserting started
i_CTRL-G_j CTRL-G <Down> line down, to column where inserting started
i_CTRL-G_k CTRL-G CTRL-K line up, to column where inserting started
i_CTRL-G_k CTRL-G k line up, to column where inserting started
i_CTRL-G_k CTRL-G <Up> line up, to column where inserting started
i_CTRL-G_u CTRL-G u start new undoable edit
i_<BS> <BS> delete character before the cursor
i_digraph {char1}<BS>{char2}
enter digraph (only when 'digraph' option set)
i_CTRL-H CTRL-H same as <BS>
i_<Tab> <Tab> insert a <Tab> character
i_CTRL-I CTRL-I same as <Tab>
i_<NL> <NL> same as <CR>
i_CTRL-J CTRL-J same as <CR>
i_CTRL-K CTRL-K {char1} {char2}
enter digraph
i_CTRL-L CTRL-L when 'insertmode' set: Leave Insert mode
i_<CR> <CR> begin new line
i_CTRL-M CTRL-M same as <CR>
i_CTRL-N CTRL-N find next match for keyword in front of the
cursor
i_CTRL-O CTRL-O execute a single command and return to insert
mode
i_CTRL-P CTRL-P find previous match for keyword in front of
the cursor
i_CTRL-Q CTRL-Q same as CTRL-V, unless used for terminal
control flow
i_CTRL-R CTRL-R {0-9a-z"%#*:=}
insert the contents of a register
i_CTRL-R_CTRL-R CTRL-R CTRL-R {0-9a-z"%#*:=}
insert the contents of a register literally
i_CTRL-R_CTRL-O CTRL-R CTRL-O {0-9a-z"%#*:=}
insert the contents of a register literally
and don't auto-indent
i_CTRL-R_CTRL-P CTRL-R CTRL-P {0-9a-z"%#*:=}
insert the contents of a register literally
and fix indent.
CTRL-S (used for terminal control flow)
i_CTRL-T CTRL-T insert one shiftwidth of indent in current
line
i_CTRL-U CTRL-U delete all entered characters in the current
line
i_CTRL-V CTRL-V {char} insert next non-digit literally
i_CTRL-V_digit CTRL-V {number} insert three digit decimal number as a single
byte.
i_CTRL-W CTRL-W delete word before the cursor
i_CTRL-X CTRL-X {mode} enter CTRL-X sub mode, see i_CTRL-X_index
i_CTRL-Y CTRL-Y insert the character which is above the cursor
i_CTRL-Z CTRL-Z when 'insertmode' set: suspend Vim
i_<Esc> <Esc> end insert mode (unless 'insertmode' set)
i_CTRL-[ CTRL-[ same as <Esc>
i_CTRL-\_CTRL-N CTRL-\ CTRL-N go to Normal mode
i_CTRL-\_CTRL-G CTRL-\ CTRL-G go to mode specified with 'insertmode'
CTRL-\ a - z reserved for extensions
CTRL-\ others not used
i_CTRL-] CTRL-] trigger abbreviation
i_CTRL-^ CTRL-^ toggle use of :lmap mappings
i_CTRL-_ CTRL-_ When 'allowrevins' set: change language
(Hebrew, Farsi) {only when compiled with
the +rightleft feature}
<Space> to '~' not used, except '0' and '^' followed by
CTRL-D
i_0_CTRL-D 0 CTRL-D delete all indent in the current line
i_^_CTRL-D ^ CTRL-D delete all indent in the current line, restore
it in the next line
i_<Del> <Del> delete character under the cursor
Meta characters (0x80 to 0xff, 128 to 255)
not used
i_<Left> <Left> cursor one character left
i_<S-Left> <S-Left> cursor one word left
i_<C-Left> <C-Left> cursor one word left
i_<Right> <Right> cursor one character right
i_<S-Right> <S-Right> cursor one word right
i_<C-Right> <C-Right> cursor one word right
i_<Up> <Up> cursor one line up
i_<S-Up> <S-Up> same as <PageUp>
i_<Down> <Down> cursor one line down
i_<S-Down> <S-Down> same as <PageDown>
i_<Home> <Home> cursor to start of line
i_<C-Home> <C-Home> cursor to start of file
i_<End> <End> cursor past end of line
i_<C-End> <C-End> cursor past end of file
i_<PageUp> <PageUp> one screenful backward
i_<PageDown> <PageDown> one screenful forward
i_<F1> <F1> same as <Help>
i_<Help> <Help> stop insert mode and display help window
i_<Insert> <Insert> toggle Insert/Replace mode
i_<LeftMouse> <LeftMouse> cursor at mouse click
i_<ScrollWheelDown> <ScrollWheelDown> move window three lines down
i_<S-ScrollWheelDown> <S-ScrollWheelDown> move window one page down
i_<ScrollWheelUp> <ScrollWheelUp> move window three lines up
i_<S-ScrollWheelUp> <S-ScrollWheelUp> move window one page up
i_<ScrollWheelLeft> <ScrollWheelLeft> move window six columns left
i_<S-ScrollWheelLeft> <S-ScrollWheelLeft> move window one page left
i_<ScrollWheelRight> <ScrollWheelRight> move window six columns right
i_<S-ScrollWheelRight> <S-ScrollWheelRight> move window one page right
commands in CTRL-X submode *i_CTRL-X_index*
i_CTRL-X_CTRL-D CTRL-X CTRL-D complete defined identifiers
i_CTRL-X_CTRL-E CTRL-X CTRL-E scroll up
i_CTRL-X_CTRL-F CTRL-X CTRL-F complete file names
i_CTRL-X_CTRL-I CTRL-X CTRL-I complete identifiers
i_CTRL-X_CTRL-K CTRL-X CTRL-K complete identifiers from dictionary
i_CTRL-X_CTRL-L CTRL-X CTRL-L complete whole lines
i_CTRL-X_CTRL-N CTRL-X CTRL-N next completion
i_CTRL-X_CTRL-O CTRL-X CTRL-O omni completion
i_CTRL-X_CTRL-P CTRL-X CTRL-P previous completion
i_CTRL-X_CTRL-S CTRL-X CTRL-S spelling suggestions
i_CTRL-X_CTRL-T CTRL-X CTRL-T complete identifiers from thesaurus
i_CTRL-X_CTRL-Y CTRL-X CTRL-Y scroll down
i_CTRL-X_CTRL-U CTRL-X CTRL-U complete with 'completefunc'
i_CTRL-X_CTRL-V CTRL-X CTRL-V complete like in : command line
i_CTRL-X_CTRL-] CTRL-X CTRL-] complete tags
i_CTRL-X_s CTRL-X s spelling suggestions
{not available when compiled without the +insert_expand feature}
==============================================================================
2. Normal mode *normal-index*
CHAR any non-blank character
WORD a sequence of non-blank characters
N a number entered before the command
{motion} a cursor movement command
Nmove the text that is moved over with a {motion}
SECTION a section that possibly starts with '}' instead of '{'
note: 1 = cursor movement command; 2 = can be undone/redone
tag char note action in Normal mode ~
------------------------------------------------------------------------------
CTRL-@ not used
CTRL-A CTRL-A 2 add N to number at/after cursor
CTRL-B CTRL-B 1 scroll N screens Backwards
CTRL-C CTRL-C interrupt current (search) command
CTRL-D CTRL-D scroll Down N lines (default: half a screen)
CTRL-E CTRL-E scroll N lines upwards (N lines Extra)
CTRL-F CTRL-F 1 scroll N screens Forward
CTRL-G CTRL-G display current file name and position
CTRL-H CTRL-H 1 same as "h"
CTRL-I CTRL-I 1 same as <Tab>
CTRL-J CTRL-J 1 same as "j"
CTRL-L CTRL-L redraw screen
CTRL-M CTRL-M 1 same as <CR>
CTRL-N CTRL-N 1 same as "j"
CTRL-O CTRL-O 1 go to N older entry in jump list
CTRL-P CTRL-P 1 same as "k"
CTRL-Q (used for terminal control flow)
CTRL-R CTRL-R 2 redo changes which were undone with 'u'
CTRL-S (used for terminal control flow)
CTRL-T CTRL-T jump to N older Tag in tag list
CTRL-U CTRL-U scroll N lines Upwards (default: half a screen)
CTRL-V CTRL-V start blockwise Visual mode
CTRL-W CTRL-W {char} window commands, see CTRL-W
CTRL-X CTRL-X 2 subtract N from number at/after cursor
CTRL-Y CTRL-Y scroll N lines downwards
CTRL-Z CTRL-Z suspend program (or start new shell)
CTRL-[ <Esc> not used
CTRL-\_CTRL-N CTRL-\ CTRL-N go to Normal mode (no-op)
CTRL-\_CTRL-G CTRL-\ CTRL-G go to mode specified with 'insertmode'
CTRL-\ a - z reserved for extensions
CTRL-\ others not used
CTRL-] CTRL-] :ta to ident under cursor
CTRL-^ CTRL-^ edit Nth alternate file (equivalent to ":e #N")
CTRL-_ not used
<Space> <Space> 1 same as "l"
! !{motion}{filter}
2 filter Nmove text through the {filter}
command
!! !!{filter} 2 filter N lines through the {filter} command
quote "{a-zA-Z0-9.%#:-"} use register {a-zA-Z0-9.%#:-"} for next
delete, yank or put (uppercase to append)
({.%#:} only work with put)
# # 1 search backward for the Nth occurrence of
the ident under the cursor
$ $ 1 cursor to the end of Nth next line
% % 1 find the next (curly/square) bracket on
this line and go to its match, or go to
matching comment bracket, or go to matching
preprocessor directive.
N% {count}% 1 go to N percentage in the file
& & 2 repeat last :s
' '{a-zA-Z0-9} 1 cursor to the first CHAR on the line with
mark {a-zA-Z0-9}
'' '' 1 cursor to the first CHAR of the line where
the cursor was before the latest jump.
'( '( 1 cursor to the first CHAR on the line of the
start of the current sentence
') ') 1 cursor to the first CHAR on the line of the
end of the current sentence
'< '< 1 cursor to the first CHAR of the line where
highlighted area starts/started in the
current buffer.
'> '> 1 cursor to the first CHAR of the line where
highlighted area ends/ended in the current
buffer.
'[ '[ 1 cursor to the first CHAR on the line of the
start of last operated text or start of put
text
'] '] 1 cursor to the first CHAR on the line of the
end of last operated text or end of put
text
'{ '{ 1 cursor to the first CHAR on the line of the
start of the current paragraph
'} '} 1 cursor to the first CHAR on the line of the
end of the current paragraph
( ( 1 cursor N sentences backward
) ) 1 cursor N sentences forward
star * 1 search forward for the Nth occurrence of
the ident under the cursor
+ + 1 same as <CR>
, , 1 repeat latest f, t, F or T in opposite
direction N times
- - 1 cursor to the first CHAR N lines higher
. . 2 repeat last change with count replaced with
N
/ /{pattern}<CR> 1 search forward for the Nth occurrence of
{pattern}
/<CR> /<CR> 1 search forward for {pattern} of last search
count 0 1 cursor to the first char of the line
count 1 prepend to command to give a count
count 2 "
count 3 "
count 4 "
count 5 "
count 6 "
count 7 "
count 8 "
count 9 "
: : 1 start entering an Ex command
N: {count}: start entering an Ex command with range
from current line to N-1 lines down
; ; 1 repeat latest f, t, F or T N times
< <{motion} 2 shift Nmove lines one 'shiftwidth'
leftwards
<< << 2 shift N lines one 'shiftwidth' leftwards
= ={motion} 2 filter Nmove lines through "indent"
== == 2 filter N lines through "indent"
> >{motion} 2 shift Nmove lines one 'shiftwidth'
rightwards
>> >> 2 shift N lines one 'shiftwidth' rightwards
? ?{pattern}<CR> 1 search backward for the Nth previous
occurrence of {pattern}
?<CR> ?<CR> 1 search backward for {pattern} of last search
@ @{a-z} 2 execute the contents of register {a-z}
N times
@: @: repeat the previous ":" command N times
@@ @@ 2 repeat the previous @{a-z} N times
A A 2 append text after the end of the line N times
B B 1 cursor N WORDS backward
C ["x]C 2 change from the cursor position to the end
of the line, and N-1 more lines [into
buffer x]; synonym for "c$"
D ["x]D 2 delete the characters under the cursor
until the end of the line and N-1 more
lines [into buffer x]; synonym for "d$"
E E 1 cursor forward to the end of WORD N
F F{char} 1 cursor to the Nth occurrence of {char} to
the left
G G 1 cursor to line N, default last line
H H 1 cursor to line N from top of screen
I I 2 insert text before the first CHAR on the
line N times
J J 2 Join N lines; default is 2
K K lookup Keyword under the cursor with
'keywordprg'
L L 1 cursor to line N from bottom of screen
M M 1 cursor to middle line of screen
N N 1 repeat the latest '/' or '?' N times in
opposite direction
O O 2 begin a new line above the cursor and
insert text, repeat N times
P ["x]P 2 put the text [from buffer x] before the
cursor N times
Q Q switch to "Ex" mode
R R 2 enter replace mode: overtype existing
characters, repeat the entered text N-1
times
S ["x]S 2 delete N lines [into buffer x] and start
insert; synonym for "cc".
T T{char} 1 cursor till after Nth occurrence of {char}
to the left
U U 2 undo all latest changes on one line
V V start linewise Visual mode
W W 1 cursor N WORDS forward
X ["x]X 2 delete N characters before the cursor [into
buffer x]
Y ["x]Y yank N lines [into buffer x]; synonym for
"yy"
ZZ ZZ store current file if modified, and exit
ZQ ZQ exit current file always
[ [{char} square bracket command (see [ below)
\ not used
] ]{char} square bracket command (see ] below)
^ ^ 1 cursor to the first CHAR of the line
_ _ 1 cursor to the first CHAR N - 1 lines lower
` `{a-zA-Z0-9} 1 cursor to the mark {a-zA-Z0-9}
`( `( 1 cursor to the start of the current sentence
`) `) 1 cursor to the end of the current sentence
`< `< 1 cursor to the start of the highlighted area
`> `> 1 cursor to the end of the highlighted area
`[ `[ 1 cursor to the start of last operated text
or start of putted text
`] `] 1 cursor to the end of last operated text or
end of putted text
`` `` 1 cursor to the position before latest jump
`{ `{ 1 cursor to the start of the current paragraph
`} `} 1 cursor to the end of the current paragraph
a a 2 append text after the cursor N times
b b 1 cursor N words backward
c ["x]c{motion} 2 delete Nmove text [into buffer x] and start
insert
cc ["x]cc 2 delete N lines [into buffer x] and start
insert
d ["x]d{motion} 2 delete Nmove text [into buffer x]
dd ["x]dd 2 delete N lines [into buffer x]
do do 2 same as ":diffget"
dp dp 2 same as ":diffput"
e e 1 cursor forward to the end of word N
f f{char} 1 cursor to Nth occurrence of {char} to the
right
g g{char} extended commands, see g below
h h 1 cursor N chars to the left
i i 2 insert text before the cursor N times
j j 1 cursor N lines downward
k k 1 cursor N lines upward
l l 1 cursor N chars to the right
m m{A-Za-z} set mark {A-Za-z} at cursor position
n n 1 repeat the latest '/' or '?' N times
o o 2 begin a new line below the cursor and
insert text, repeat N times
p ["x]p 2 put the text [from register x] after the
cursor N times
q q{0-9a-zA-Z"} record typed characters into named register
{0-9a-zA-Z"} (uppercase to append)
q q (while recording) stops recording
q: q: edit : command-line in command-line window
q/ q/ edit / command-line in command-line window
q? q? edit ? command-line in command-line window
r r{char} 2 replace N chars with {char}
s ["x]s 2 (substitute) delete N characters [into
buffer x] and start insert
t t{char} 1 cursor till before Nth occurrence of {char}
to the right
u u 2 undo changes
v v start characterwise Visual mode
w w 1 cursor N words forward
x ["x]x 2 delete N characters under and after the
cursor [into buffer x]
y ["x]y{motion} yank Nmove text [into buffer x]
yy ["x]yy yank N lines [into buffer x]
z z{char} commands starting with 'z', see z below
{ { 1 cursor N paragraphs backward
bar 1 cursor to column N
} } 1 cursor N paragraphs forward
~ ~ 2 'tildeop' off: switch case of N characters
under cursor and move the cursor N
characters to the right
~ ~{motion} 'tildeop' on: switch case of Nmove text
<C-End> <C-End> 1 same as "G"
<C-Home> <C-Home> 1 same as "gg"
<C-Left> <C-Left> 1 same as "b"
<C-LeftMouse> <C-LeftMouse> ":ta" to the keyword at the mouse click
<C-Right> <C-Right> 1 same as "w"
<C-RightMouse> <C-RightMouse> same as "CTRL-T"
<Del> ["x]<Del> 2 same as "x"
N<Del> {count}<Del> remove the last digit from {count}
<Down> <Down> 1 same as "j"
<End> <End> 1 same as "$"
<F1> <F1> same as <Help>
<Help> <Help> open a help window
<Home> <Home> 1 same as "0"
<Insert> <Insert> 2 same as "i"
<Left> <Left> 1 same as "h"
<LeftMouse> <LeftMouse> 1 move cursor to the mouse click position
<MiddleMouse> <MiddleMouse> 2 same as "gP" at the mouse click position
<PageDown> <PageDown> same as CTRL-F
<PageUp> <PageUp> same as CTRL-B
<Right> <Right> 1 same as "l"
<RightMouse> <RightMouse> start Visual mode, move cursor to the mouse
click position
<S-Down> <S-Down> 1 same as CTRL-F
<S-Left> <S-Left> 1 same as "b"
<S-LeftMouse> <S-LeftMouse> same as "*" at the mouse click position
<S-Right> <S-Right> 1 same as "w"
<S-RightMouse> <S-RightMouse> same as "#" at the mouse click position
<S-Up> <S-Up> 1 same as CTRL-B
<Undo> <Undo> 2 same as "u"
<Up> <Up> 1 same as "k"
<ScrollWheelDown> <ScrollWheelDown> move window three lines down
<S-ScrollWheelDown> <S-ScrollWheelDown> move window one page down
<ScrollWheelUp> <ScrollWheelUp> move window three lines up
<S-ScrollWheelUp> <S-ScrollWheelUp> move window one page up
<ScrollWheelLeft> <ScrollWheelLeft> move window six columns left
<S-ScrollWheelLeft> <S-ScrollWheelLeft> move window one page left
<ScrollWheelRight> <ScrollWheelRight> move window six columns right
<S-ScrollWheelRight> <S-ScrollWheelRight> move window one page right
==============================================================================
2.1 Text objects *objects*
These can be used after an operator or in Visual mode to select an object.
tag command action in op-pending and Visual mode ~
------------------------------------------------------------------------------
v_aquote a" double quoted string
v_a' a' single quoted string
v_a( a( same as ab
v_a) a) same as ab
v_a< a< "a <>" from '<' to the matching '>'
v_a> a> same as a<
v_aB aB "a Block" from "[{" to "]}" (with brackets)
v_aW aW "a WORD" (with white space)
v_a[ a[ "a []" from '[' to the matching ']'
v_a] a] same as a[
v_a` a` string in backticks
v_ab ab "a block" from "[(" to "])" (with braces)
v_ap ap "a paragraph" (with white space)
v_as as "a sentence" (with white space)
v_at at "a tag block" (with white space)
v_aw aw "a word" (with white space)
v_a{ a{ same as aB
v_a} a} same as aB
v_iquote i" double quoted string without the quotes
v_i' i' single quoted string without the quotes
v_i( i( same as ib
v_i) i) same as ib
v_i< i< "inner <>" from '<' to the matching '>'
v_i> i> same as i<
v_iB iB "inner Block" from "[{" and "]}"
v_iW iW "inner WORD"
v_i[ i[ "inner []" from '[' to the matching ']'
v_i] i] same as i[
v_i` i` string in backticks without the backticks
v_ib ib "inner block" from "[(" to "])"
v_ip ip "inner paragraph"
v_is is "inner sentence"
v_it it "inner tag block"
v_iw iw "inner word"
v_i{ i{ same as iB
v_i} i} same as iB
==============================================================================
2.2 Window commands *CTRL-W*
tag command action in Normal mode ~
------------------------------------------------------------------------------
CTRL-W_CTRL-B CTRL-W CTRL-B same as "CTRL-W b"
CTRL-W_CTRL-C CTRL-W CTRL-C same as "CTRL-W c"
CTRL-W_CTRL-D CTRL-W CTRL-D same as "CTRL-W d"
CTRL-W_CTRL-F CTRL-W CTRL-F same as "CTRL-W f"
CTRL-W CTRL-G same as "CTRL-W g .."
CTRL-W_CTRL-H CTRL-W CTRL-H same as "CTRL-W h"
CTRL-W_CTRL-I CTRL-W CTRL-I same as "CTRL-W i"
CTRL-W_CTRL-J CTRL-W CTRL-J same as "CTRL-W j"
CTRL-W_CTRL-K CTRL-W CTRL-K same as "CTRL-W k"
CTRL-W_CTRL-L CTRL-W CTRL-L same as "CTRL-W l"
CTRL-W_CTRL-N CTRL-W CTRL-N same as "CTRL-W n"
CTRL-W_CTRL-O CTRL-W CTRL-O same as "CTRL-W o"
CTRL-W_CTRL-P CTRL-W CTRL-P same as "CTRL-W p"
CTRL-W_CTRL-Q CTRL-W CTRL-Q same as "CTRL-W q"
CTRL-W_CTRL-R CTRL-W CTRL-R same as "CTRL-W r"
CTRL-W_CTRL-S CTRL-W CTRL-S same as "CTRL-W s"
CTRL-W_CTRL-T CTRL-W CTRL-T same as "CTRL-W t"
CTRL-W_CTRL-V CTRL-W CTRL-V same as "CTRL-W v"
CTRL-W_CTRL-W CTRL-W CTRL-W same as "CTRL-W w"
CTRL-W_CTRL-X CTRL-W CTRL-X same as "CTRL-W x"
CTRL-W_CTRL-Z CTRL-W CTRL-Z same as "CTRL-W z"
CTRL-W_CTRL-] CTRL-W CTRL-] same as "CTRL-W ]"
CTRL-W_CTRL-^ CTRL-W CTRL-^ same as "CTRL-W ^"
CTRL-W_CTRL-_ CTRL-W CTRL-_ same as "CTRL-W _"
CTRL-W_+ CTRL-W + increase current window height N lines
CTRL-W_- CTRL-W - decrease current window height N lines
CTRL-W_< CTRL-W < decrease current window width N columns
CTRL-W_= CTRL-W = make all windows the same height & width
CTRL-W_> CTRL-W > increase current window width N columns
CTRL-W_H CTRL-W H move current window to the far left
CTRL-W_J CTRL-W J move current window to the very bottom
CTRL-W_K CTRL-W K move current window to the very top
CTRL-W_L CTRL-W L move current window to the far right
CTRL-W_P CTRL-W P go to preview window
CTRL-W_R CTRL-W R rotate windows upwards N times
CTRL-W_S CTRL-W S same as "CTRL-W s"
CTRL-W_T CTRL-W T move current window to a new tab page
CTRL-W_W CTRL-W W go to N previous window (wrap around)
CTRL-W_] CTRL-W ] split window and jump to tag under cursor
CTRL-W_^ CTRL-W ^ split current window and edit alternate
file N
CTRL-W__ CTRL-W _ set current window height to N (default:
very high)
CTRL-W_b CTRL-W b go to bottom window
CTRL-W_c CTRL-W c close current window (like :close)
CTRL-W_d CTRL-W d split window and jump to definition under
the cursor
CTRL-W_f CTRL-W f split window and edit file name under the
cursor
CTRL-W_F CTRL-W F split window and edit file name under the
cursor and jump to the line number
following the file name.
CTRL-W_g_CTRL-] CTRL-W g CTRL-] split window and do :tjump to tag under
cursor
CTRL-W_g] CTRL-W g ] split window and do :tselect for tag
under cursor
CTRL-W_g} CTRL-W g } do a :ptjump to the tag under the cursor
CTRL-W_gf CTRL-W g f edit file name under the cursor in a new
tab page
CTRL-W_gF CTRL-W g F edit file name under the cursor in a new
tab page and jump to the line number
following the file name.
CTRL-W_h CTRL-W h go to Nth left window (stop at first window)
CTRL-W_i CTRL-W i split window and jump to declaration of
identifier under the cursor
CTRL-W_j CTRL-W j go N windows down (stop at last window)
CTRL-W_k CTRL-W k go N windows up (stop at first window)
CTRL-W_l CTRL-W l go to Nth right window (stop at last window)
CTRL-W_n CTRL-W n open new window, N lines high
CTRL-W_o CTRL-W o close all but current window (like :only)
CTRL-W_p CTRL-W p go to previous (last accessed) window
CTRL-W_q CTRL-W q quit current window (like :quit)
CTRL-W_r CTRL-W r rotate windows downwards N times
CTRL-W_s CTRL-W s split current window in two parts, new
window N lines high
CTRL-W_t CTRL-W t go to top window
CTRL-W_v CTRL-W v split current window vertically, new window
N columns wide
CTRL-W_w CTRL-W w go to N next window (wrap around)
CTRL-W_x CTRL-W x exchange current window with window N
(default: next window)
CTRL-W_z CTRL-W z close preview window
CTRL-W_bar CTRL-W set window width to N columns
CTRL-W_} CTRL-W } show tag under cursor in preview window
CTRL-W_<Down> CTRL-W <Down> same as "CTRL-W j"
CTRL-W_<Up> CTRL-W <Up> same as "CTRL-W k"
CTRL-W_<Left> CTRL-W <Left> same as "CTRL-W h"
CTRL-W_<Right> CTRL-W <Right> same as "CTRL-W l"
==============================================================================
2.3 Square bracket commands *[* *]*
tag char note action in Normal mode ~
------------------------------------------------------------------------------
[_CTRL-D [ CTRL-D jump to first #define found in current and
included files matching the word under the
cursor, start searching at beginning of
current file
[_CTRL-I [ CTRL-I jump to first line in current and included
files that contains the word under the
cursor, start searching at beginning of
current file
[# [# 1 cursor to N previous unmatched #if, #else
or #ifdef
[' [' 1 cursor to previous lowercase mark, on first
non-blank
[( [( 1 cursor N times back to unmatched '('
[star [* 1 same as "[/"
[` [` 1 cursor to previous lowercase mark
[/ [/ 1 cursor to N previous start of a C comment
[D [D list all defines found in current and
included files matching the word under the
cursor, start searching at beginning of
current file
[I [I list all lines found in current and
included files that contain the word under
the cursor, start searching at beginning of
current file
[P [P 2 same as "[p"
[[ [[ 1 cursor N sections backward
[] [] 1 cursor N SECTIONS backward
[c [c 1 cursor N times backwards to start of change
[d [d show first #define found in current and
included files matching the word under the
cursor, start searching at beginning of
current file
[f [f same as "gf"
[i [i show first line found in current and
included files that contains the word under
the cursor, start searching at beginning of
current file
[m [m 1 cursor N times back to start of member
function
[p [p 2 like "P", but adjust indent to current line
[s [s 1 move to the previous misspelled word
[z [z 1 move to start of open fold
[{ [{ 1 cursor N times back to unmatched '{'
[<MiddleMouse> [<MiddleMouse> 2 same as "[p"
]_CTRL-D ] CTRL-D jump to first #define found in current and
included files matching the word under the
cursor, start searching at cursor position
]_CTRL-I ] CTRL-I jump to first line in current and included
files that contains the word under the
cursor, start searching at cursor position
]# ]# 1 cursor to N next unmatched #endif or #else
]' ]' 1 cursor to next lowercase mark, on first
non-blank
]) ]) 1 cursor N times forward to unmatched ')'
]star ]* 1 same as "]/"
]` ]` 1 cursor to next lowercase mark
]/ ]/ 1 cursor to N next end of a C comment
]D ]D list all #defines found in current and
included files matching the word under the
cursor, start searching at cursor position
]I ]I list all lines found in current and
included files that contain the word under
the cursor, start searching at cursor
position
]P ]P 2 same as "[p"
][ ][ 1 cursor N SECTIONS forward
]] ]] 1 cursor N sections forward
]c ]c 1 cursor N times forward to start of change
]d ]d show first #define found in current and
included files matching the word under the
cursor, start searching at cursor position
]f ]f same as "gf"
]i ]i show first line found in current and
included files that contains the word under
the cursor, start searching at cursor
position
]m ]m 1 cursor N times forward to end of member
function
]p ]p 2 like "p", but adjust indent to current line
]s ]s 1 move to next misspelled word
]z ]z 1 move to end of open fold
]} ]} 1 cursor N times forward to unmatched '}'
]<MiddleMouse> ]<MiddleMouse> 2 same as "]p"
==============================================================================
2.4 Commands starting with 'g' *g*
tag char note action in Normal mode ~
------------------------------------------------------------------------------
g_CTRL-A g CTRL-A only when compiled with MEM_PROFILE
defined: dump a memory profile
g_CTRL-G g CTRL-G show information about current cursor
position
g_CTRL-H g CTRL-H start Select block mode
g_CTRL-] g CTRL-] :tjump to the tag under the cursor
g# g# 1 like "#", but without using "\<" and "\>"
g$ g$ 1 when 'wrap' off go to rightmost character of
the current line that is on the screen;
when 'wrap' on go to the rightmost character
of the current screen line
g& g& 2 repeat last ":s" on all lines
g' g'{mark} 1 like ' but without changing the jumplist
g` g`{mark} 1 like ` but without changing the jumplist
gstar g* 1 like "*", but without using "\<" and "\>"
g+ g+ go to newer text state N times
g, g, 1 go to N newer position in change list
g- g- go to older text state N times
g0 g0 1 when 'wrap' off go to leftmost character of
the current line that is on the screen;
when 'wrap' on go to the leftmost character
of the current screen line
g8 g8 print hex value of bytes used in UTF-8
character under the cursor
g; g; 1 go to N older position in change list
g< g< display previous command output
g? g? 2 Rot13 encoding operator
g?g? g?? 2 Rot13 encode current line
g?g? g?g? 2 Rot13 encode current line
gD gD 1 go to definition of word under the cursor
in current file
gE gE 1 go backwards to the end of the previous
WORD
gH gH start Select line mode
gI gI 2 like "I", but always start in column 1
gJ gJ 2 join lines without inserting space
gN gN 1,2 find the previous match with the last used
search pattern and Visually select it
gP ["x]gP 2 put the text [from register x] before the
cursor N times, leave the cursor after it
gQ gQ switch to "Ex" mode with Vim editing
gR gR 2 enter Virtual Replace mode
gT gT go to the previous tab page
gU gU{motion} 2 make Nmove text uppercase
gV gV don't reselect the previous Visual area
when executing a mapping or menu in Select
mode
g] g] :tselect on the tag under the cursor
g^ g^ 1 when 'wrap' off go to leftmost non-white
character of the current line that is on
the screen; when 'wrap' on go to the
leftmost non-white character of the current
screen line
g_ g_ 1 cursor to the last CHAR N - 1 lines lower
ga ga print ascii value of character under the
cursor
gd gd 1 go to definition of word under the cursor
in current function
ge ge 1 go backwards to the end of the previous
word
gf gf start editing the file whose name is under
the cursor
gF gF start editing the file whose name is under
the cursor and jump to the line number
following the filename.
gg gg 1 cursor to line N, default first line
gh gh start Select mode
gi gi 2 like "i", but first move to the '^ mark
gj gj 1 like "j", but when 'wrap' on go N screen
lines down
gk gk 1 like "k", but when 'wrap' on go N screen
lines up
gn gn 1,2 find the next match with the last used
search pattern and Visually select it
gm gm 1 go to character at middle of the screenline
go go 1 cursor to byte N in the buffer
gp ["x]gp 2 put the text [from register x] after the
cursor N times, leave the cursor after it
gq gq{motion} 2 format Nmove text
gr gr{char} 2 virtual replace N chars with {char}
gs gs go to sleep for N seconds (default 1)
gt gt go to the next tab page
gu gu{motion} 2 make Nmove text lowercase
gv gv reselect the previous Visual area
gw gw{motion} 2 format Nmove text and keep cursor
netrw-gx gx execute application for file name under the
cursor (only with netrw plugin)
g@ g@{motion} call 'operatorfunc'
g~ g~{motion} 2 swap case for Nmove text
g<Down> g<Down> 1 same as "gj"
g<End> g<End> 1 same as "g$"
g<Home> g<Home> 1 same as "g0"
g<LeftMouse> g<LeftMouse> same as <C-LeftMouse>
g<MiddleMouse> same as <C-MiddleMouse>
g<RightMouse> g<RightMouse> same as <C-RightMouse>
g<Up> g<Up> 1 same as "gk"
==============================================================================
2.5 Commands starting with 'z' *z*
tag char note action in Normal mode ~
------------------------------------------------------------------------------
z<CR> z<CR> redraw, cursor line to top of window,
cursor on first non-blank
zN<CR> z{height}<CR> redraw, make window {height} lines high
z+ z+ cursor on line N (default line below
window), otherwise like "z<CR>"
z- z- redraw, cursor line at bottom of window,
cursor on first non-blank
z. z. redraw, cursor line to center of window,
cursor on first non-blank
z= z= give spelling suggestions
zA zA open a closed fold or close an open fold
recursively
zC zC close folds recursively
zD zD delete folds recursively
zE zE eliminate all folds
zF zF create a fold for N lines
zG zG mark word as good spelled word
zH zH when 'wrap' off scroll half a screenwidth
to the right
zL zL when 'wrap' off scroll half a screenwidth
to the left
zM zM set 'foldlevel' to zero
zN zN set 'foldenable'
zO zO open folds recursively
zR zR set 'foldlevel' to the deepest fold
zW zW mark word as wrong (bad) spelled word
zX zX re-apply 'foldlevel'
z^ z^ cursor on line N (default line above
window), otherwise like "z-"
za za open a closed fold, close an open fold
zb zb redraw, cursor line at bottom of window
zc zc close a fold
zd zd delete a fold
ze ze when 'wrap' off scroll horizontally to
position the cursor at the end (right side)
of the screen
zf zf{motion} create a fold for Nmove text
zg zg mark word as good spelled word
zh zh when 'wrap' off scroll screen N characters
to the right
zi zi toggle 'foldenable'
zj zj 1 move to the start of the next fold
zk zk 1 move to the end of the previous fold
zl zl when 'wrap' off scroll screen N characters
to the left
zm zm subtract one from 'foldlevel'
zn zn reset 'foldenable'
zo zo open fold
zr zr add one to 'foldlevel'
zs zs when 'wrap' off scroll horizontally to
position the cursor at the start (left
side) of the screen
zt zt redraw, cursor line at top of window
zv zv open enough folds to view the cursor line
zw zw mark word as wrong (bad) spelled word
zx zx re-apply 'foldlevel' and do "zv"
zz zz redraw, cursor line at center of window
z<Left> z<Left> same as "zh"
z<Right> z<Right> same as "zl"
==============================================================================
3. Visual mode *visual-index*
Most commands in Visual mode are the same as in Normal mode. The ones listed
here are those that are different.
tag command note action in Visual mode ~
------------------------------------------------------------------------------
v_CTRL-\_CTRL-N CTRL-\ CTRL-N stop Visual mode
v_CTRL-\_CTRL-G CTRL-\ CTRL-G go to mode specified with 'insertmode'
v_CTRL-C CTRL-C stop Visual mode
v_CTRL-G CTRL-G toggle between Visual mode and Select mode
v_<BS> <BS> 2 Select mode: delete highlighted area
v_CTRL-H CTRL-H 2 same as <BS>
v_CTRL-O CTRL-O switch from Select to Visual mode for one
command
v_CTRL-V CTRL-V make Visual mode blockwise or stop Visual
mode
v_<Esc> <Esc> stop Visual mode
v_CTRL-] CTRL-] jump to highlighted tag
v_! !{filter} 2 filter the highlighted lines through the
external command {filter}
v_: : start a command-line with the highlighted
lines as a range
v_< < 2 shift the highlighted lines one
'shiftwidth' left
v_= = 2 filter the highlighted lines through the