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
|
*vim_idx.txt* For Vim version 4.2. Last modification: 1996 June 16
This file contains a list of all commands for each mode, with a tag and a
short description. The list is sorted on ASCII value.
When looking for certain functionality use the search command. For example,
to look for deleting something, use: "/delete".
Sections:
|insert_index| 1. Insert mode
|normal_index| 2. Normal mode
|objects| 2.1. text objects
|CTRL-W| 2.2. window commands
|[| 2.3. Square bracket commands
|g| 2.4. Commands starting with 'g'
|visual_index| 3. Visual mode
|ex_edit_index| 4. Command-line editing
|ex_cmd_index| 5. EX commands
For an overview of options see vim_help.txt |option_list|.
For a complete description of each option see vim_ref.txt |options|.
1. Insert mode *insert_index*
==============
tag char action
-----------------------------------------------------------------------
|i_CTRL-@| CTRL-@ insert previously inserted text and stop
insert
|i_CTRL-A| CTRL-A insert previously inserted text
|i_CTRL-B| CTRL-B Only if compiled with TOGGLE_REVINS (which is
not the default): toggle 'revins' (backwards
insert) option.
|i_CTRL-C| CTRL-C quit insert mode, without checking for
abbreviation.
|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
CTRL-G not used
|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
CTRL-L not used
|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 (used for terminal control flow)
|i_CTRL-R| CTRL-R <0-9a-z"%:>
insert contents of register <0-9a-z"%:>
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 below
|i_CTRL-Y| CTRL-Y insert the character which is above the cursor
CTRL-Z not used
|i_<Esc>| <Esc> end insert mode
|i_CTRL-[| CTRL-[ same as <Esc>
CTRL-\ not used
CTRL-] not used
CTRL-^ not used
|i_CTRL-_| CTRL-_ change languate (RIGHTLEFT)
<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_<Down>| <Down> cursor one line down
|i_<End>| <End> cursor past end of line
|i_<C-End>| <C-End> cursor past end of file
|i_<F1>| <F1> same as <Help>
|i_<Help>| <Help> stop insert mode and display help window
|i_<Home>| <Home> cursor to start of line
|i_<C-Home>| <C-Home> cursor to start of file
|i_<Insert>| <Insert> toggle Insert/Replace mode
|i_<Left>| <Left> cursor one character left
|i_<LeftMouse>| <LeftMouse> cursor at mouse click
|i_<PageDown>| <PageDown> one screenfull forward
|i_<PageUp>| <PageUp> one screenfull backward
|i_<Right>| <Right> cursor one character right
|i_<S-Down>| <S-Down> same as <PageDown>
|i_<S-Left>| <S-Left> cursor one word left
|i_<S-Right>| <S-Right> cursor one word right
|i_<S-Up>| <S-Up> same as <PageUp>
|i_<Up>| <Up> cursor one line up
commands in CTRL-X submode
|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 identifers from dictionary
|i_CTRL-X_CTRL-L| CTRL-X CTRL-L complete whole lines
|i_CTRL-X_CTRL-Y| CTRL-X CTRL-Y scroll down
|i_CTRL-X_CTRL-]| CTRL-X CTRL-] complete tags
2. Normal mode *normal_index*
==============
CHAR any non-blank chararacter
WORD any sequences 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
|<BS>| <BS> 1 same as "h"
|CTRL-H| CTRL-H 1 same as "h"
|<Tab>| <Tab> 1 go to N newer entry in jump list
|CTRL-I| CTRL-I 1 same as <Tab>
|<NL>| <NL> 1 same as "j"
|CTRL-J| CTRL-J 1 same as "j"
CTRL-K not used
|CTRL-L| CTRL-L redraw screen
|<CR>| <CR> 1 cursor to the first CHAR N lines lower
|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 cursor N lines upward
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
|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-\ 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 buffer <a-zA-Z0-9.%:-"> for next
delete, yank or put (upper case 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 of the line where
highlighted area starts/started
|'>| '> 1 cursor to the first CHAR of the line where
highlighted area ends/ended
|'[| '[ 1 cursor to the first CHAR on the line of the
start of last operated text or start of
putted text
|']| '] 1 cursor to the first CHAR on the line of the
end of last operated text or end of putted
text
|(| ( 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 cursor to the first CHAR N lines lower
|,| , 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 "
|:| : start entering an Ex command
|N:| {count}: start entering an Ex command with range
from current line to N 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 named buffer <a-z>
N times
|@:| @: repeat the previous ":" command N times
|@@| @@ 2 repeat the previous @<a-z> N times
|A| A 2 append text at 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{motion} 2 format Nmove lines (obsolete)
|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" or "0cc",
depending on autoindent
|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
|[| [{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 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
|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]
|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 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"> (upper case to append)
|q| q (while recording) stops recording
|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<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. redraw, cursor line to center of window,
cursor on first non-blank
|z-| z- redraw, cursor line at bottom of window,
cursor on first non-blank
|zb| zb redraw, cursor line at bottom of window
|ze| ze when 'wrap' off scroll horizontally to
position the cursor at the end (right side)
of the screen
|zh| zh when 'wrap' off scroll screen N characters
to the right
|zl| zl when 'wrap' off scroll screen N characters
to the left
|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
|zz| zz redraw, cursor line at center of window
|z<Left>| z<Left> same as "zh"
|z<Right>| z<Right> same as "zl"
|{| { 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-LeftMouse>| <C-LeftMouse> ":ta" to the keyword at the mouse click
|<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 "$"
|<C-End>| <C-End> 1 same as "G"
|<F1>| <F1> same as <Help>
|<Help>| <Help> open a help window
|<Home>| <Home> 1 same as "0"
|<C-Home>| <C-Home> 1 same as "gg"
|<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 "P" 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"
2.1 text objects *objects*
These can be used after an operator or in Visual mode to select an object
|v_a| a a word (with white space)
|v_A| A a WORD (with white space)
|v_p| p a paragraph
|v_s| s a sentence
|v_P| P a block from "[{" to "]}"
|v_S| S a block from "[(" and "])"
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-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-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-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-]| 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 = make all windows the same height
|CTRL-W_R| CTRL-W R rotate windows upwards N times
|CTRL-W_S| CTRL-W S same as "CTRL-W s"
|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 filename under the
cursor
|CTRL-W_i| CTRL-W i split window and jump to declaration of
identifier under the cursor
|CTRL-W_j| CTRL-W j go to N next window (stop at last window)
|CTRL-W_k| CTRL-W k go to N previous window (stop at first
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_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_<Down>| CTRL-W <Down> same as "CTRL-W j"
|CTRL-W_<Up>| CTRL-W <Up> same as "CTRL-W k"
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 N times back to unmatched '('
|[star| [* 1 same as "[/"
|[/| [/ 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
|[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
|[p| [p 2 like "P", but adjust indent to current line
|[{| [{ 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 N times forward to unmatched ')'
|]star| ]* 1 same as "]/"
|]/| ]/ 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
|]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
|]p| ]p 2 like "p", but adjust indent to current line
|]}| ]} 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#| 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
|gstar| g* 1 like "*", but without using "\<" and "\>"
|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
|gD| gD 1 goto definiton of word under the cursor in
current file
|gE| gE 1 go backwards to the end of the previous
WORD
|gI| gI 2 like "I", but always start in column 1
|gU| gU{motion} 2 make Nmove text uppercase
|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_CTRL-G| g_CTRL-G show information about current cursor
position
|ga| ga print ascii value of character under the
cursor
|gd| gd 1 goto definiton 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
|gg| gg 1 cursor to line N, default first line
|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
|gq| gq{motion} 2 format Nmove text (same as "Q")
|gs| gs goto sleep for N seconds (default 1)
|gu| gu{motion} 2 make Nmove text lowercase
|gv| gv reselect the previous Visual area
|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<RightMouse>| g<RightMouse> same as <C-RightMouse>
|g<Up>| g<Up> 1 same as "gk"
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-V| CTRL-V make Visual mode blockwise or 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
external program given with the 'equalprg'
option
|v_>| > 2 shift the highlighted lines one
'shiftwidth' right
|v_A| A extend the highlighted area with a WORD
|v_C| C 2 delete the highlighted lines and start
insert
|v_D| D 2 delete the highlighted lines
|v_J| J 2 join the highlighted lines
|v_K| K run 'keywordprg' on the highlighted text
|v_P| P extend the highlighted text with a {} block
|v_Q| Q 2 format the highlighted lines (obsolete)
|v_R| R 2 delete the highlighted lines and start
insert
|v_S| S extend the highlighted text with a () block
|v_U| U 2 make highlighted text uppercase
|v_V| V make Visual mode linewise or stop Visual
mode
|v_X| X 2 delete the highlighted lines
|v_Y| Y yank the highlighted lines
|v_a| a extend the highlighted area with a word
|v_c| c 2 delete the highlighted text and start insert
|v_d| d 2 delete the highlighted text
|v_gq| gq 2 format the highlighted lines
|v_gv| gv exchange current and previous highlighted
text
|v_o| o move cursor to other end of hightlighted
text
|v_p| p extend the highlighted area with a paragraph
|v_r| r 2 delete the highlighted text and start insert
|v_s| s extend the highlighted area with a sentence
|v_u| u 2 make highlighted text lowercase
|v_v| v make Visual mode characterwise or stop
Visual mode
|v_x| x 2 delete the highlighted text
|v_y| y yank the highlighted text
|v_~| ~ 2 swap case for the highlighted text
4. Command-line editing *ex_edit_index*
=======================
Get to the command-line with the ':', '!', '/' or '?' commands.
Normal characters are inserted at the current cursor position.
"Completion" below refers to context-sensitive completion. It will complete
filenames, tags, commands etc. as appropriate.
CTRL-@ not used
|c_CTRL-A| CTRL-A do completion on the pattern in front of the
cursor and insert all matches
|c_CTRL-B| CTRL-B cursor to begin of command-line
|c_CTRL-C| CTRL-C same as <ESC>
|c_CTRL-D| CTRL-D list completions that match the pattern in
front of the cursor
|c_CTRL-E| CTRL-E cursor to end of command-line
CTRL-F not used
CTRL-G not used
|c_<BS>| <BS> delete the character in front of the cursor
|c_digraph| {char1} <BS> {char2}
enter digraph when 'digraph' is on
|c_CTRL-H| CTRL-H same as <BS>
|c_<Tab>| <Tab> if 'wildchar' is <Tab>: Do completion on
the pattern in front of the cursor
|c_<S-Tab>| <S-Tab> same as CTRL-P
|c_wildchar| 'wildchar' Do completion on the pattern in front of the
cursor (default: <Tab>)
|c_CTRL-I| CTRL-I same as <Tab>
|c_<NL>| <NL> same as <CR>
|c_CTRL-J| CTRL-J same as <CR>
|c_CTRL-K| CTRL-K {char1} {char2}
enter digraph
|c_CTRL-L| CTRL-L do completion on the pattern in front of the
cursor and insert the longest common part
|c_<CR>| <CR> execute entered command
|c_<CR>| CTRL-M same as <CR>
|c_CTRL-N| CTRL-N after using 'wildchar' with multiple matches:
go to next match, otherwise: same as <Down>
CTRL-O not used
|c_CTRL-P| CTRL-P after using 'wildchar' with multiple matches:
go to previous match, otherwise: same as <Up>
|c_CTRL-Q| CTRL-Q same as CTRL-V (used for terminal control flow)
|c_CTRL-R| CTRL-R <0-9a-z"%:>
insert contents of register <0-9a-z"%:>
CTRL-S (used for terminal control flow)
CTRL-T not used
|c_CTRL-U| CTRL-U remove all characters
|c_CTRL-V| CTRL-V insert next non-digit literally, insert three
digit decimal number as a single byte.
|c_CTRL-W| CTRL-W delete the word in front of the cursor
CTRL-X not used
CTRL-Y not used
CTRL-Z not used
|c_<Esc>| <Esc> abandon command-line without executing it
|c_<Esc>| CTRL-[ same as <Esc>
CTRL-\ not used
CTRL-] not used
CTRL-^ not used
|c_CTRL-_| CTRL-_ change languate (RIGHTLEFT)
|c_<Del>| <Del> delete the character under the cursor
|c_<Down>| <Down> recall next command-line from history that
matches pattern in front of the cursor
|c_<End>| <End> cursor to end of command-line
|c_<Home>| <Home> cursor to start of command-line
|c_<Insert>| <Insert> toggle insert/overstrike mode
|c_<Left>| <Left> cursor left
|c_<LeftMouse>| <LeftMouse> cursor at mouse click
|c_<PageDown>| <PageDown> same as <S-Down>
|c_<PageUp>| <PageUp> same as <S-Up>
|c_<Right>| <Right> cursor right
|c_<S-Down>| <S-Down> recall next command-line from history
|c_<S-Left>| <S-Left> cursor one word left
|c_<S-Right>| <S-Right> cursor one word right
|c_<S-Up>| <S-Up> recall previous command-line from history
|c_<Up>| <Up> recall previous command-line from history that
matches pattern in front of the cursor
5. EX commands *ex_cmd_index*
==============
This is a brief listing of all the ":" commands, without mentioning any
arguments.
|:!| :! filter lines or execute an external command
|:!!| :!! repeat last ":!" command
|:#| :# same as ":number"
|:&| :& repeat last ":substitute"
|:<| :< shift lines one 'shiftwidth' left
|:=| := print the cursor line number
|:>| :> shift lines one 'shiftwidth' right
|:@| :@ execute contents of a register
|:@@| :@@ repeat the previous ":@"
|:Next| :N[ext] go to previous file in the argument list
|:append| :a[ppend] append text (not implemented)
|:abbreviate| :ab[breviate] enter abbreviation
|:abclear| :abc[lear] remove all abbreviations
|:all| :al[l] open a window for each file in the argument
list
|:args| :ar[gs] print the argument list
|:argument| :argu[ment] go to specific file in the argument list
|:ascii| :a[scii] print ascii value of character under the
cursor
|:autocmd| :au[tocmd] enter or show autocommands
|:buffer| :b[uffer] go to specific buffer in the buffer list
|:bNext| :bN[ext] go to next buffer in the buffer list
|:ball| :ba[ll] open a window for each file in the buffer list
|:bdelete| :bd[elete] delete specific files from the buffer list
|:blast| :bl[ast] go to last file in the buffer list
|:bmodified| :bm[odified] go to next file in the buffer list that has
been modified
|:bnext| :bn[ext] go to next file in the buffer list
|:bprevious| :bp[revious] go to previous file in the buffer list
|:brewind| :br[ewind] go to last file in the buffer list
|:buffers| :buffers list all files in the buffer list
|:bunload| :bun[load] unload a specific buffer
|:change| :c[hange] replace a line (not implemented)
|:cNext| :cN[ext] go to previous error
|:cabbrev| :ca[bbrev] like ":abbreviate" but for command-line mode
|:cabclear| :cabc[lear] clear all abbreviations for command-line mode
|:cc| :cc go to specific error
|:cd| :cd change directory
|:center| :ce[nter] format lines at the center
|:cfile| :cf[ile] read the file with error messages
|:chdir| :chd[ir] change directory
|:checkpath| :che[ckpath] list included files
|:clist| :cl[ist] list all errors
|:close| :clo[se] close current window
|:cmap| :cm[ap] like ":map" but for command-line mode
|:cmapclear| :cmapc[lear] clear all mappings for command-line mode
|:cnext| :cn[ext] go to next error
|:cnoremap| :cno[remap] like ":noremap" but for command-line mode
|:cnoreabbrev| :cnorea[bbrev] like ":noreabbrev" but for command-line mode
|:copy| :co[py] copy lines
|:cprevious| :cp[revious] go to previous error
|:cquit| :cq[uit] quit Vim with an error code
|:cunmap| :cu[nmap] like ":unmap" but for command-line mode
|:cunabbrev| :cuna[bbrev] like ":unabbrev" but for command-line mode
|:delete| :d[elete] delete lines
|:display| :di[splay] display registers
|:digraphs| :dig[raphs] show or enter digraphs
|:djump| :dj[ump] jump to #define
|:dlist| :dl[ist] list #defines
|:doautocmd| :do[autocmd] apply autocommands
|:dsearch| :ds[earch] list one #define
|:dsplit| :dsp[lit] split window and jump to #define
|:edit| :e[dit] edit a file
|:ex| :ex same as ":edit"
|:exit| :exi[t] same as ":xit"
|:file| :f[ile] show or set the current file name
|:files| :files list all files in the buffer list
|:fixdel| :fix[del] set key code of <Del>
|:global| :g[lobal] execute commands for matching lines
|:gui| :gu[i] start the GUI
|:gvim| :gv[im] start the GUI
|:help| :h[elp] open a help window
|:insert| :i[nsert] insert text (not implemented)
|:iabbrev| :ia[bbrev] like ":abbrev" but for Insert mode
|:iabclear| :iabc[lear] like ":abclear" but for Insert mode
|:ijump| :ij[ump] jump to definition of identifier
|:ilist| :il[ist] list lines where identifier matches
|:imap| :im[ap] like ":map" but for Insert mode
|:imapclear| :imapc[lear] like ":mapclear" but for Insert mode
|:inoremap| :ino[remap] like ":noremap" but for Insert mode
|:inoreabbrev| :inorea[bbrev] like ":noreabbrev" but for Insert mode
|:isearch| :is[earch] list one line where identifier matches
|:isplit| :isp[lit] split window and jump to definition of
identifier
|:iunmap| :iu[nmap] like ":unmap" but for Insert mode
|:iunabbrev| :iuna[bbrev] like ":unabbrev" but for Insert mode
|:join| :j[oin] join lines
|:jumps| :ju[mps] print the jump list
|:k| :k set a mark
|:list| :l[ist] print lines
|:last| :la[st] go to the last file in the argument list
|:left| :le[ft] left align lines
|:ls| :ls list all buffers
|:move| :m[ove] move lines
|:mark| :ma[rk] set a mark
|:make| :mak[e] execute external command 'makeprg' and parse
error messages
|:map| :map show or enter a mapping
|:mapclear| :mapc[lear] clear all mappings for Normal and Visual mode
|:marks| :marks list all marks
|:menu| :me[nu] enter a new menu item
|:mkexrc| :mk[exrc] write current mappings and settings to a file
|:mkvimrc| :mkv[imrc] write current mappings and settings to a file
|:mode| :mod[e] show or change the screen mode
|:next| :n[ext] go to next file in the argument list
|:new| :new create a new empty window
|:nmap| :nm[ap] like ":map" but for Normal mode
|:nmapclear| :nmapc[lear] clear all mappings for Normal mode
|:nnoremap| :nn[oremap] like ":noremap" but for Normal mode
|:noremap| :no[remap] enter a mapping that will not be remapped
|:noreabbrev| :norea[bbrev] enter an abbreviation that will not be
remapped
|:normal| :norm[al] execute Normal mode commands
|:number| :nu[mber] print lines with line number
|:nunmap| :nun[map] like ":unmap" but for Normal mode
|:open| :o[pen] start open mode (not implemented)
|:only| :on[ly] close all windows except current one
|:print| :p[rint] print lines
|:pop| :po[p] jump to older entry in tag stack
|:preserve| :pre[serve] write all text to swap file
|:previous| :prev[ious] go to previous file in argument list
|:put| :pu[t] insert contents of register in the text
|:pwd| :pw[d] print current directory
|:quit| :q[uit] quit current window or Vim
|:qall| :qa[ll] quit Vim
|:read| :r[ead] read file into the text
|:recover| :rec[over] recover a file from a swap file
|:redo| :red[o] redo one undone change
|:registers| :reg[isters] display the contents of registers
|:resize| :res[ize] change current window height
|:retab| :ret[ab] change tab size
|:rewind| :rew[ind] go to the first file in the argument list
|:right| :ri[ght] right align text
|:rviminfo| :rv[iminfo] read from viminfo file
|:substitute| :s[ubstitute] find and replace text
|:sNext| :sN[ext] split window and go to previous file in
argument list
|:sargument| :sa[rgument] split window and go to specific file in
argument list
|:sall| :sal[l] open a window for each file in argument list
|:sbuffer| :sb[uffer] split window and go to specific file in the
buffer list
|:sbNext| :sbN[ext] split window and go to previous file in the
buffer list
|:sball| :sba[ll] open a window for each file in the buffer list
|:sblast| :sbl[ast] split window and go to last file in buffer
list
|:sbmodified| :sbm[odified] split window and go to modified file in the
buffer list
|:sbnext| :sbn[ext] split window and go to next file in the buffer
list
|:sbprevious| :sbp[revious] split window and go to previous file in the
buffer list
|:sbrewind| :sbr[ewind] split window and go to first file in the
buffer list
|:set| :se[t] show or set options
|:shell| :sh[ell] escape to a shell
|:sleep| :sl[eep] do nothing for a few seconds
|:slast| :sla[st] split window and go to last file in the
argument list
|:snext| :sn[ext] split window and go to next file in the
argument list
|:source| :so[urce] read Vim or Ex commands from a file
|:split| :sp[lit] split current window
|:sprevious| :spr[evious] split window and go to previous file in the
argument list
|:srewind| :sr[ewind] split window and go to first file in the
argument list
|:stop| :st[op] suspend the editor or escape to a shell
|:stag| :sta[g] split window and jump to a tag
|:sunhide| :sun[hide] same as ":unhide"
|:suspend| :sus[pend] same as ":stop"
|:sview| :sv[iew] split window and edit file read-only
|:swapname| :sw[apname] show the name of the current swap file
|:t| :t same as ":copy"
|:tag| :ta[g] jump to tag
|:tags| :tags show the contents of the tag stack
|:undo| :u[ndo] undo last change(s)
|:unabbreviate| :una[bbreviate] remove abbreviation
|:unhide| :unh[ide] open a window for each loaded file in the
buffer list
|:unmap| :unm[ap] remove mapping
|:version| :ve[rsion] print version number and other info
|:vglobal| :v[global] execute commands for not matching lines
|:visual| :vi[sual] same as ":edit"
|:view| :vie[w] edit a file read-only
|:vmap| :vm[ap] like ":map" but for Visual mode
|:vmapclear| :vmapc[lear] remove all mappings for Visual mode
|:vnoremap| :vn[oremap] like ":noremap" but for Visual mode
|:vunmap| :vu[nmap] like ":unmap" but for Visual mode
|:write| :w[rite] write to a file
|:wNext| :wN[ext] write to a file and go to previous file in
argument list
|:wall| :wa[ll] write all (changed) buffers
|:wnext| :wn[ext] write to a file and go to next file in
argument list
|:wprevious| :wp[revious] write to a file and go to previous file in
argument list
|:wq| :wq write to a file and quit window or Vim
|:wqall| :wqa[ll] write all changed buffers and quit Vim
|:wviminfo| :wv[iminfo] write to viminfo file
|:xit| :x[it] write if buffer changed and quit window or Vim
|:xall| :xa[ll] same as ":wqall"
|:yank| :y[ank] yank lines into a register
|:z| :z print some lines (not implemented)
|:~| :~ repeat last ":substitute"
|