blob: 17997555142e186bb5221f86a2194bdb27f0e412 (
plain)
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
|
# Vim tricks
## vimgrep
Search through all files in a directory
:vimgrep /pattern/ **/*
Open window with all instances:
:copen
## Search
\c - ignore case
## Settings
ic - ignore case in searches
## readline
vi keybindings in various `readline` and similar CLIs:
# ~/.inputrc
set editing-mode vi
# ~/.editrc
bind -v
# ~/.haskeline
editMode: Vi
# ~/.guile
(use-modules (ice-9 readline))
(activate-readline)
## Navigating help
| prefix | example | context |
| ------ | ------------- | ------------------------------------------------ |
| `:` | `:h :r` | ex command (command starting with a colon) |
| `none` | `:h r` | normal mode |
| `v_` | `:h v_r` | visual mode |
| `i_` | `:h i_CTRL-W` | insert mode |
| `c_` | `:h c_CTRL-R` | ex command line |
| `/` | `:h /\r` | search pattern (in this case, `:h \r` also works |
| `'` | `:h 'ro'` | option |
| `-` | `:h -r` | Vim argument (starting Vim) |
## Registers
: is the "last command" register. @: reruns the last command.
## Marks
mA - capital letters are global, will jump to file
`a - jumps to line and column of mark, not just line
## v/V/<c-v> as operators
Most commands act line-wise (d2j deletes two lines). v makes things
character-wise, <c-v> makes them block-wise.
## Ranges
g/regex/command # executes command on each line matching regex
v/regex/command # executes command on each line not matching regex
## Ex commands
:norm abc # runs the keys abc on each line in range
:g/abc/norm dt; # deletes until semicolon on each line with "abc"
:co <location> # copies range to location (can be ., +n, 'a)
:mv <location> # same but moves
:s/pattern/thing/c # replace, prompting at each replacement
## Visual mode
gv - selects the previous visual
g<c-a/x> - increment/decrement by 1 more on each selected line
0 1 1
0 <c-a> -> 1 g<c-a> -> 2
0 1 3
## Using vim as a hex editor?
:%!xxd
:%!xxd -r
## Spellcheck
* `:setlocal spell spelllang=en_us`: start English spell checker in current pane
* `[/]s`: previous/next marked word
* `[/]S`: previous/next bad word
* `z=`: replacement suggestions
* `z[u]g`: add/remove from dictionary
* `z[u]w`: add/remove from wrong word list
## Formatting
gq
## Splits
* number before split shortcut - height of old window
Set window height/width (defaults to max):
[n]^W _
[n]^W |
Equalize window heights/widths:
^W =
Close window:
^W c
## Movements
% - goes to matching bracket
## Time travel
:earlier 5m
:later 10m
|