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
|
:viusage = summary of all keyboard shortcuts
:options = shows currently :set options (with descriptions)
leader key = usually set to backslash expects a quick command
[normal mode]
f{char} = move cursor to the character {char}
gf = open file under cursor
<C-w>gf = open file under cursor in a tab
<C-w>] = jump to the tag under the cursor in a new window
<C-t> = jump back from where that ^ brought you
K = keyword lookup for the word under the cursor (see :help kp)
w = next word
e = end of word (=inner word)
@see: :h text-objects
ci' = change between single quote
ci" = change between double quote
ci( = change between brace
cit = change XML Tag
ciw = select inner word
caw = select 'a word'
" where c can be replaced by v for visual mode
:%s/foo/bar/g = replace all foo with bar
:g/foo/s/bar//g = on lines with foo replace bar with nothing
:g!/foo/s/bar//g = on lines not containing foo replace bar with nothing
:g!/^foo/execute("normal dd") delete lines starting with foo
flags, end: after the last /
g = replace globally (all occurances on the current line)
c = confirm each replace, also allows to switch to g (use the flag to see the help message)
e = places the cursor in the end of the selection
flags, within the search string:
\v = use very magic search (more like perl)
\V = use no very magic, more like searching verbatim
\zs .. \ze = mark begin and end of a sub pattern (like perl lookaround assertions)
[visual mode] # with selected lines
gq = formats text so that it fits in whatever :set textwidth was set
iB = select block between curly braces (:help object-select)
[commands]
command line mode begins with : and has its own key mappings starting with c like in cnormap
:spell [word] = adds a word to the current dictionary (no mistake any more)
:set list = display non printable characters
:retab = replaces tabs with spaces
:set expandtab = in insert mode: replace tab with spaces
:Explore = cli version open file dialog (file explorer)
:Lex = use netrw as project drawer (stays open in its own window)
:only = 'maximize' current buffer
<c-r><c-w> = auto completion with the word under the cursor (interesting with incsearch)
[navigation]
<CTRL-]> = look up the tag under the cursor (help links as well)
<CTRL-T> = return back from tag under the cursor
gd = jump to the declaration of the variable under the cursor
[macros] # record and play back a series of vim commands
qa = start (q) macro recording in register a (can be anything)
q = stop macro recording
@a = replay macro a
:'<,'>normal @a = apply a to every line in the current selection
:reg = lists all registers (including those with macros in them)
[registers]
notice, that registers get used for both: macro recordings and copying text
:reg = shows contents of all registers
"0p = pasts from register 0, which is the same as "", but not overwritten by dd
"ap = same for register a
"0yy = yanks to register 0 (same as y by itself)
"ay = yanks current selection to register a (in visual mode)
[marker]
ma = set marker a-z (a in this case)
mA = create a session persistent file marker which can be used to reopen a file (not bound to the buffer)
`a = go to marker a (line & column)
'a = go to marker a (line, first non blank), same as `a^
[hotkeys]
<C-A>, <C-X> = increment, decrement number under the cursor
[windows]
<C-W>v = splits buffer vertically (screen uses |)
<C-W>s = splits buffer horizontally (same as screen)
<C-W>w = moves the cursor to the next window and back
<C-W>[dir] = moves the cursor in that direction (use hjkl or arrow keys)
<C-W>[HK] = make a vertical split horizontal and vice versa
<C-W>o = only: close all other windows
<C-W>c = close: current window in which the cursor sits
[vimdiff]
do = get changes from other window into the current
dp = put changes from current window into the other
]c = jump to the next change
[c = jump to the prevous change
[folds]
za = toggle a fold
zM = close all folds
zR = opens all folds (unfold all)
zE = eliminates all folds
[buffers]
:bn = buffer next
:bp = buffer previous
:bd = buffer dispatch (close)
:b <tab> = switch buffer by name (use <tab> and <return>)
:set nobuflisted = hide buffer in buffer list (great for neovim's terminal)
[special]
g CTRL-g = display file properties including word and char count
q: = show command history and use it like a normal buffer
z= = show spellcheck suggestions
[completions]
CTRL-O = display completions: omnicomplete (context dependant completions)
CTRL-X CTRL-F = display completions: file name (using vim-internals omnicomplete)
CTRL-N CTRL-P = display completions: file keywords
CTRL-K = display completions: dictionary
CTRL-T = display completions: thesaurus
CTRL-I = display completions: include files
CTRL-] = display completions: tags
CTRL-D = display completions: (marcro-) definitions
CTRL-V = display completions: vim command line
CTRL-U = display completions: user-defined
[annoyances]
gv = visual mode: reselect last selection
CTRL-o = lets the caret jump back to the previous location
CTRL-L = redraws the complete screen
CTRL-R<register> = in insert mode and command line: paste contents of <register> (e.g. : for last command, * for clipboard)
CTRL-R = in normal mode: redoes what has been undone with u
"<register>p = in normal mode: paste paste contents of <register>
[registers]
"/ = last search expression
": = last command entered
"= = expression register (to do calculations or call vim functions)
[netrw]
:Lex = open the netrw-view as project drawer
gn = makes the directory under the cursor the root directory
a = toggles display of hidden files
[filetype:css]
viB:sort = sort inner block by name
[vim commands]
:for i in range(1,12) | put ='2016-'.i | endfor
[fancy utf-8 symbols]
௵
[debugging]
:profile! start /tmp/profile.log
:profile func *
:profile file *
" At this point do slow actions
:profdel *
:e /tmp/profile.log
" add a break point to a vim script (like vimrc) to invoke the internal debugger
:breakadd here
:finish = from within a viml-script: stop sourcing it
[substitutions]
delete all comments: %s/\/\*\*< [^(\*\/)]*\*\///g
remove empty lines: global/^$/d
remove non-empty lines: v/^$/d
[programs]
gpm - cut and paste helper for the linux console (to get text from CTRL-ALT-F2 to CTRL-ALT-F3)
[vim modeline]
filetype can have multiple values, like python.django
The last line can be a mode line, which holds settings like tab width:
# vim: noai:ts=2:sw=2 filetype=dosini.text
|