5 b B e E f F G ^h h H j ^j k l L M ^m n N ^n ^p t T w W
6 0 ` ' # $ % ^ * ( ) { } ; / ? + - _ | ,
13 "Interactive cheat sheet for vi text editors, notably Vim,",
14 "describing each key in various modes.",
16 keywords => [qw' vi vim nvi '],
20 g => "extended commands (g)",
22 z => "additional commands (z)",
23 '[' => "backward search commands ([)",
24 ']' => "forward search commands (])",
25 '^w' => "window commands (ctrl-w)",
26 '^wg' => "extended window commands (ctrl-w g)",
28 vg => "extended visual commands (v g)",
29 va => "text object selection (v a/i)",
30 # c => "command-line mode",
32 'i^g' => "extended insert commands (i ctrl-g)",
33 'i^x' => "insert completion commands (i ctrl-x)",
34 d => 'delete motions',
38 g1 => ["info", "Info command: shows/does something without altering anything."],
39 g2 => ["motion", "Moves the cursor, or defines the range for an operator (<motion>)."],
40 g3 => ["positioning", "Other movement (jumps, window (re)positioning)."],
41 g4 => ["command", "Direct action command."],
42 g6 => ["ins mode", "Enters Insert or Replace mode."],
43 g7 => ["mode", "Enters a different mode."],
44 g8 => ["vis mode", "Enters Visual or Select mode."],
45 g9 => ["key cmd", "Additional key commands (click for overview)."],
47 arg => ["key<arg>", "Commands with a dot need a char argument afterwards."],
48 motion => ["key<motion>", "Requires a motion afterwards, operates between cursor and destination."],
49 'v6 new' => ["vim", "Not in original Vi (assessment incomplete)."],
50 'xcommentary xlion xsurround xunimpaired ext' => ["plugin", "Optional features provided by common plugins."],
55 '~' => ["g4 undo", "case toggle"],
56 '!' => ["g4 argm undo modec", "filt<>er lines"],
57 '@' => ["g4 arg undo", "play macro"],
58 '#' => ["g2 v6", "rev. find word"],
60 '%' => ["g2", "goto match"],
61 '^' => ["g2", '"soft" bol'],
62 '&' => ["g4 undo", ":s rep<>eat"],
63 '*' => ["g2 v6", "find word"],
64 '(' => ['g2', "begin senten<>ce"],
65 ')' => ['g2', "end senten<>ce"],
66 '_' => ["g2", '"soft" bol down'],
67 '+' => ["g2", "next line"],
68 '`' => ["g2 arg", "goto mark"],
69 '0' => ["g2", '"hard" bol'],
70 '^^'=> ["g4", "edit alt. file"],
71 '-' => ["g2", "prev line"],
72 '=' => ['g4 argm undo', "re<>ind<>ent"],
73 '?' => ["g2 arg modec", "find rev."],
74 ';' => ["g2", "repeat t/f/T/F"],
75 ':' => ["g4 modec", "ex cmd line"],
76 "'" => ["g2 arg", "goto mark bol"],
77 '"' => ['g4 arg', "use reg<>ister"],
78 '\\' => ['g9 arg', "reser<>ved"],
79 '^\\' => ["g7 arg", "to mode/<>ext<>ens<>ion<>s"],
80 ',' => ["g2", "reverse t/T/f/F"],
81 '<' => ["g4 argm undo", "un<>ind<>ent"],
82 '.' => ["g4 undo", "repeat last cmd"],
83 '>' => ["g4 argm undo", "ind<>ent"],
84 '/' => ["g2 arg modec", "find"],
85 '[' => ["g9 arg mode[", "move back<>ward<>s"],
86 '{' => ["g2", "begin parag."],
87 ']' => ["g9 arg mode]", "move forw<>ard"],
88 '}' => ["g2", "end parag."],
89 '^]'=> ["g3", "go to tag"],
90 '|' => ["g2", "goto (1st) col"],
92 'a' => ["g6 undo modei", "app<>end"],
93 'A' => ["g6 undo modei", "app<>end to eol"],
94 '^a'=> ["g4 undo", "incr<>ement\nAdd one"],
95 'b' => ["g2", "prev word\nBack"],
96 'B' => ["g2", 'prev <span style="font-variant:small-caps">word</span>'],
97 '^b'=> ["g3", "page up"],
98 'c' => ["g6 argm undo modei", "chan<>ge"],
99 'C' => ["g6 undo modei", "chan<>ge to eol"],
100 '^c'=> ["g4", "abort"],
101 'd' => ["g4 argm undo moded", "del<>ete"],
102 'D' => ["g4 undo", "delete to eol"],
103 '^d'=> ["g3", "scroll down"],
104 'e' => ["g2", "end word"],
105 'E' => ["g2", 'end <span style="font-variant:small-caps">word</span>'],
106 '^e'=> ["g3", "window down\nExtra line"],
107 'f' => ["g2 arg", "fwd to char"],
108 'F' => ["g2 arg", "back<>wd to char"],
109 '^f'=> ["g3", "page down\npage Forward"],
110 'g' => ["g9 arg modeg", "extra cmds"],
111 'G' => ["g2", "eof/<>goto ln"],
112 '^g'=> ["g1", ":file (info)"],
113 'h' => ["g2", "<left>"],
114 'H' => ["g2", "screen top\nHome row"],
116 'i' => ["g6 undo modei", "insert mode"],
117 'I' => ["g6 undo modei", "insert at bol"],
118 '^i'=> ["g2 v6", "jump to newer\nIncrease position"],
119 'j' => ["g2", "<down>"],
120 'J' => ["g4 undo", "join lines"],
122 'k' => ["g2", "<up>"],
123 'K' => ["g4", "help\nlooKup Keyword"],
124 'l' => ["g2", "<right>"],
125 'L' => ["g2", "screen bottom\nLowermost Line"],
126 '^l'=> ["g1", "redraw"],
127 'm' => ["g4 arg", "set mark"],
128 'M' => ["g2", "screen mid<>dle"],
130 'n' => ["g2", "next find"],
131 'N' => ["g2", "prev find"],
133 'o' => ["g6 undo modei", "line below\nOpen"],
134 'O' => ["g6 undo modei", "line above"],
135 '^o'=> ["g2 v6", "jump to older"],
136 'p' => ["g4 undo", "paste after"],
137 'P' => ["g4 undo", "paste before"],
139 'q' => ["g7 arg", "rec<>ord macro\nQueue seQuence"],
140 'Q' => ["g7", "ex mode"],
141 '^q'=> ["g1", "(xon)\nQome back"], # or ^v
142 'r' => ["g4 arg undo", "repl<>ace char"],
143 'R' => ["g6 undo modei", "repl<>ace mode"],
144 '^r'=> ["g4 undo v6", "redo"],
145 's' => ["g6 undo modei", "subst char"],
146 'S' => ["g6 undo modei", "subst line"],
147 '^s'=> ["g1", "(xoff)\nStop"],
148 't' => ["g2 arg", "till char"],
149 'T' => ["g2 arg", "back till char"],
150 '^t'=> ["g3", "back tag"], # backtrag :P
151 'u' => ["g4 undo", "undo"],
152 'U' => ["g4 undo", "undo line"],
153 '^u'=> ["g3", "scroll up"],
154 'v' => ["g8 modev", "visual mode"],
155 'V' => ["g8 modev", "visual lines"],
156 '^v'=> ["g8 modev v6", "visual block"],
157 'w' => ["g2", "next word"],
158 'W' => ["g2", 'next <span style="font-variant:small-caps">word</span>'],
159 '^w'=> ["g9 arg mode^w", "win<>dow cmds"],
160 'x' => ["g4 undo", "delete char"],
161 'X' => ["g4 undo", "back<>space"],
162 '^x'=> ["g4 undo", "subs<>tract"],
163 'y' => ["g4 argm", "yank\n(copy)"],
164 'Y' => ["g4", "yank line"],
165 '^y'=> ["g3", "window up\nYield"],
166 'z' => ["g9 arg modez", "extra cmds"],
167 'Z' => ["g9 arg modeZ", "quit"],
168 '^z'=> ["g1", ":sus<>pend\nzzz (as in sleep)"],
174 "\e"=> ["g7 mode", "normal mode"],
176 '~' => ["g4 argm v6", "case toggl<>e"],
177 '@' => ["g4 v7", "oper<>at<>or<>func"],
178 '#' => ["g2 v6", "rev. find string"],
179 '$' => ["g2", "virt<>ual eol"],
180 '^' => ["g2 v6", qq'"soft" bol v<>irt<>ual'],
181 '&' => ["g4", ":s rep<>eat glob<>al<>ly\nGlobal substitute"],
182 '*' => ["g2 v6", "find string"],
183 '_' => ["g2 v6", qq'"soft" eol'],
184 '+' => ["g4 v7", "later undo"],
185 '`' => ["g2 v6 arg", "to mark keepj<>umps"],
186 '8' => ["g1", "char hex val<>ue<>s"],
187 '0' => ["g2 v6", "virtual bol"],
188 '-' => ["g4 v7", "earlier undo"],
190 ']' => ["g3", "go to tselect"],
191 '^]'=> ["g3", "go to tjump"],
192 ';' => ["g2", "to prev change pos"],
193 "'" => ["g2 v6 arg", "to mark keepj<>umps"],
194 '<' => ["g4 v7", "see prev cmd output"],
195 '?' => ["g4 argm v6", "rot13 encode"],
196 ',' => ["g2", "to next change pos"],
198 'a' => ["g1", "char value\nGet Ascii value"],
199 '^a'=> ["g1", "mem usage stats"],
200 'd' => ["g2 v6", "local declar<>ation"],
201 'D' => ["g2 v6", "global declar<>ation"],
202 'e' => ["g2", "back to word end"],
203 'E' => ["g2", qq'back to <span style="font-variant:small-caps">word</span> end'],
204 'f' => ["g4 v6", "edit file at cur<>sor\nGoto File"],
205 'F' => ["g4 v7", "edit file + jump"],
206 'g' => ["g2", "first line"],
207 '^g'=> ["g1 vim6", "cur<>sor pos info"],
208 'h' => ["g8 modev", "select mode\nGet Highlighted"],
209 'H' => ["g8 modev", "select lines\nGet Highlighted"],
210 '^h'=> ["g8 modev v6", "select block\nGet Highlighted"],
211 'i' => ["g6 undo modei", "insert at last pos"],
212 'I' => ["g6 undo modei", "insert at soft bol"],
213 'j' => ["g2 v6", "<down> screen"],
214 'J' => ["g4", "join leave spac<>ing"],
215 'k' => ["g2 v6", "<up> screen"],
216 'm' => ["g2 v6", "cen<>ter screen"],
217 'n' => ["g8 v7 modev", "select next find"],
218 'N' => ["g8 v7 modev", "select prev find"],
219 'o' => ["g2", ":goto (byte)"],
220 'p' => ["g4 undo", "paste still"],
221 'P' => ["g4", "paste before still"],
222 'q' => ["g4 argm", "for<>mat"],
223 'Q' => ["g7 v6", "ex mode manual :"],
224 'r' => ["g4 arg", "virt. repl<>ace char"],
225 'R' => ["g6 undo modei", "virt. repl<>ace mode"],
226 's' => ["g1 v6", "sleep\nGo to Sleep"],
227 't' => ["g3 v7", "next tab\nGoto Tab"],
228 'T' => ["g3 v7", "tab back"],
229 'u' => ["g4 argm v6", "lower<>case"], # XXX undo?
230 'U' => ["g4 undo argm v6", "up<>per<>case"],
231 'v' => ['g8 modev', "prev<>ious highl<>ight\nprecedinG Visual"],
232 'V' => ["g4", "avoid resel<>ect<>ion"],
233 'w' => ["g4 argm v7", "for<>mat still"],
234 'x' => ["g4 v7 ext", "Netrw<>BrowseX"],
237 'c' => ['g4 argm xcommentary', "(un)<>com<>ment\ncommentary or tComment plugin"],
238 'l' => ['g3 argm arg xlion', "align to left\nlion plugin, also good for easy-align"],
239 'L' => ['g3 argm arg xlion', "align to right\nlion plugin"],
245 "\e"=> ["g7 mode", "normal mode"],
248 'Q' => ["g4 v6", " :q! (force)"],
249 'Z' => ["g4", " :wq (write)"],
255 "\e"=> ["g7 mode", "normal mode"],
257 '^' => ["g3", "page above"],
258 '+' => ["g3", "page below"],
259 '-' => ["g3", "line at bottom bol\ndon't (-) see any further"],
260 '=' => ["g4 v7", "sug<>gest spell<>ing"],
261 '.' => ["g3", "line at center bol"],
264 'a' => ["g4 v6 folding", "toggle fold"],
265 'A' => ["g4 v6 folding", "toggle fold rec<>urs<>ive<>ly"],
266 'b' => ["g3", "line at bot. bol"],
267 'c' => ["g4 v6 folding", "close fold"],
268 'C' => ["g4 v6 folding", "close folds rec<>curs<>ive<>ly"],
269 'd' => ["g4 v6 folding", "delete fold"],
270 'D' => ["g4 v6 folding", "delete folds rec<>urs<>ive"],
271 'e' => ["g3", "cursor at right side"],
272 'E' => ["g4 v6 folding", "elimi<>nate f<>olds"],
273 'f' => ["g4 argm v6 folding", "create fold"],
274 'F' => ["g4 v6 folding", "fold lines"],
275 'g' => ["g4 v7", "add spell<>ing\nGood word"],
276 'G' => ["g4 v7", "temp spell<>ing"],
277 'h' => ["g3", "scroll <left>"],
278 'H' => ["g3", "scroll <left> half scr<>een"],
279 'i' => ["g4 v6 folding", "toggle all folds"],
280 'j' => ["g2 v6 folding", "next fold start"],
281 'k' => ["g2 v6 folding", "prev fold end"],
282 'l' => ["g3", "scroll <right>"],
283 'L' => ["g3", "scroll <right> half scr<>een"],
284 '^m'=> ["g3", "line at top bol"],
285 'm' => ["g4 v6 folding", "fold more"],
286 'M' => ["g4 v6 folding", "close all folds"],
287 'n' => ["g4 v6 folding", "fold none"],
288 'N' => ["g4 v6 folding", "fold norm<>al"],
289 'o' => ["g4 v6 folding", "open fold"],
290 'O' => ["g4 v6 folding", "open folds rec<>urs<>ive<>ly"],
291 'r' => ["g4 v6 folding", "reduce folding"],
292 'R' => ["g4 v6 folding", "open all folds"],
293 's' => ["g3", "cursor at left side"],
294 't' => ["g3", "line at top"],
295 'u' => ["g4 arg v7", "undo spell<>ing"],
296 'v' => ["g4 v6 folding", "unfold cursor line"],
297 'w' => ["g4 v7", "add missp<>ell<>ing\nWrong word"],
298 'W' => ["g4 v7", "temp missp<>ell<>ing"],
299 'x' => ["g4 v6 folding", "update folds"],
300 'X' => ["g4 v6 folding", "re<>apply f<>olds"],
301 'z' => ["g3", "line at center\nZee Zenter (with a funny accent)"],
307 "\e"=> ["g7 mode", "normal mode"],
309 '`' => ["g2 v6", "previous lc mark"],
310 '#' => ["g2", "previous open #if<>/#else"],
311 '(' => ["g2", "previous open ("],
313 '/' => ["g2", "start of C com<>m<>ent"],
314 "'" => ["g2 v6", \"0[`^"],
315 '{' => ["g2", => "previous open {"],
316 '[' => ["g2", "section back<>ward<>s"],
318 ']' => ["g2", qq'<span style="font-variant:small-caps">section</span> back<>ward<>s'],
320 'c' => ["g2", "start of change backw<>ards"],
321 'd' => ["g1", "define line"],
322 'D' => ["g4", "defin<>ition"],
323 '^d'=> ["g3", "to defin<>it<>ion"],
324 'i' => ['g1', "first occur<>renc<>e line"],
325 'I' => ['g4', "first occur<>renc<>e"],
326 '^i'=> ['g3', "to first occur<>renc<>e"],
327 'm' => ["g2", "start of funct<>ion"],
328 'p' => ["g4", "P reind<>ent<>ed"],
330 's' => ["g3 v7", "last missp<>ell<>ing"],
331 'S' => ["g3 v7", "last bad word"],
332 'z' => ["g2 v6 folding", "start of open fold"],
335 'a' => ["g3 xunimpaired", "prev<>ious file\nunimpaired map for :prev"],
336 'A' => ["g3 xunimpaired", "first file\nunimpaired map for :rew"],
337 'b' => ["g3 xunimpaired", "prev<>ious buffer\nunimpaired map for :bp"],
338 'B' => ["g3 xunimpaired", "first buffer\nunimpaired map for :br"],
339 'e' => ["g4 xunimpaired", "exchange line above\nunimpaired plugin"],
340 'f' => \'gf', # deprecated
341 'f' => ["g3 xunimpaired", "preced<>ing file alph<>abet<>ic<>al<>ly\nunimpaired plugin"], # overrides native alias
342 'l' => ["g3 xunimpaired", "previous loc<>at<>ion\nunimpaired map for :lp"],
343 'L' => ["g3 xunimpaired", "first loc<>ation\nunimpaired map for :lr"],
344 '^l'=> ["g3 xunimpaired", "next file in loc<>at<>ions\nunimpaired map for :lpf"],
345 'n' => ["g3 xunimpaired", "previous conflict<>/hunk\nunimpaired plugin"],
346 'o' => ["g9 arg xunimpaired", "enable option\nunimpaired plugin"],
347 #'p' => ["g4 xunimpaired", "linewise paste before"],
348 'q' => ["g3 xunimpaired", "previous quickfix\nunimpaired map for :cp"],
349 'Q' => ["g3 xunimpaired", "first quickfix\nunimpaired map for :cr"],
350 '^q'=> ["g3 xunimpaired", "quickfix file b<>ack\nunimpaired map for :cpf"],
351 't' => ["g3 xunimpaired", "previous tag\nunimpaired map for :tp"],
352 'T' => ["g3 xunimpaired", "first tag\nunimpaired map for :tr"],
353 'u' => ["g4 argm xunimpaired", "url encode\nunimpaired plugin"],
354 'x' => ["g4 argm xunimpaired", "xml encode\nunimpaired plugin"],
355 'y' => ["g4 argm xunimpaired", "escape c str<>ing\nunimpaired plugin"],
356 ' ' => ["g4 xunimpaired", 'prepend blank l<>in<>e<>s'],
362 "\e"=> ["g7 mode", "normal mode"],
364 '`' => ["g2 v6", "next lc mark"],
365 '#' => ["g2", "next open #endif<>/#else"],
366 ')' => ["g2", "next open )"],
368 "'" => ["g2 v6", \'$]`^'],
369 '/' => ["g2", "end of C com<>m<>ent"],
370 '[' => ["g2", qq'<span style="font-variant:small-caps">section</span> forw<>ard'],
372 ']' => ["g2", "section forw<>ard"],
373 '}' => ["g2", "next open }"],
375 'c' => ["g2", "start of change forw<>ards"],
376 'd' => ["g1", "next define line"],
377 'D' => ["g4", "next define"],
378 '^d'=> ["g3", "to next define"],
379 'f' => \'gf', # deprecated
380 'i' => ["g1", "next occur<>renc<>e line"],
381 'I' => ["g4", "next occur<>renc<>e"],
382 '^i'=> ["g3", "to occur<>renc<>e"],
383 'm' => ["g2", "end of funct<>ion"],
384 'p' => ["g4", "p reind<>ent<>ed"],
386 's' => ["g3 v7", "next missp<>ell<>ing"],
387 'S' => ["g3 v7", "next bad word"],
388 'z' => ["g2 v6 folding", "end of open fold"],
391 'a' => ["g3 xunimpaired", "next file\nunimpaired map for :n"],
392 'A' => ["g3 xunimpaired", "last file\nunimpaired map for :la"],
393 'b' => ["g3 xunimpaired", "next buffer\nunimpaired map for :bn"],
394 'B' => ["g3 xunimpaired", "last buffer\nunimpaired map for :bl"],
395 'e' => ["g4 xunimpaired", "exchange line belo<>w\nunimpaired plugin"],
396 'f' => ["g3 xunimpaired", "next file alph<>abet<>ic<>al<>ly\nunimpaired plugin"], # overrides native alias
397 'l' => ["g3 xunimpaired", "next loc<>ation\nunimpaired map for :lne"],
398 'L' => ["g3 xunimpaired", "last loc<>ation\nunimpaired map for :lla"],
399 '^l'=> ["g3 xunimpaired", "file back in loc<>at<>ions\nunimpaired map for :lnf"],
400 'n' => ["g3 xunimpaired", "next confl<>ict<>/hunk\nunimpaired plugin"],
401 'o' => ["g9 arg xunimpaired", "disable option\nunimpaired plugin"],
402 'q' => ["g3 xunimpaired", "next quickfix error\nunimpaired map for :cn"],
403 'Q' => ["g3 xunimpaired", "last quickfix error\nunimpaired map for :cla"],
404 '^q'=> ["g3 xunimpaired", "next file in q<>uick<>f<>ix\nunimpaired map for :cnf"],
405 't' => ["g3 xunimpaired", "next tag\nunimpaired map for :tn"],
406 'T' => ["g3 xunimpaired", "last tag\nunimpaired map for :tl"],
407 'u' => ["g4 argm xunimpaired", "url decode\nunimpaired plugin"],
408 'x' => ["g4 argm xunimpaired", "xml decode\nunimpaired plugin"],
409 'y' => ["g4 argm xunimpaired", "unescap<>e c str<>ing\nunimpaired plugin"],
410 ' ' => ["g4 xunimpaired", 'add blank l<>in<>e<>s bel<>ow'],
416 "\e"=> ["g7 mode", "normal mode"],
418 '<' => ["g3", => "width decr<>ease"],
419 '>' => ["g3", => "width incr<>ease"],
420 '^' => ["g4", => "split, edit alt file"],
421 '_' => ["g3", => "set height"],
422 '+' => ["g3", => "height incr<>ease"],
423 '-' => ["g3", => "height decr<>ease"],
424 '=' => ["g3", => "same height"],
426 ']' => ["g3", => "split, to tag"],
427 '}' => ["g3", => "pre<>view tag"],
428 '|' => ["g3", => "set width"],
430 'b' => ["g3", => "go to bot<>tom"],
431 'c' => ["g3", => ":close"],
432 '^c'=> ["g7 mode", "abort"],
433 'd' => ["g3", => "split, to def<>inition"],
434 'f' => ["g4", => "split, file edit"],
435 'F' => ["g4 v7", => "^wf, jump to line"],
436 'g' => ["g9 arg mode^wg", => "extra cmds"],
437 'h' => ["g3", => "go left"],
438 'H' => ["g3", => "move far left"],
439 'i' => ["g3", => "split, to decl of id<>ent<>ifier"],
440 'j' => ["g3", => "go down"],
441 'J' => ["g3", => "move to bottom"],
442 'k' => ["g3", => "go up"],
443 'K' => ["g3", => "move to top"],
444 'l' => ["g3", => "go right"],
445 'L' => ["g3", => "move far right"],
446 'n' => ["g4", => "open new"],
447 'o' => ["g3", => ":only current"],
448 'p' => ["g3", => "go to prev<>ious"],
449 'P' => ["g3", => "go to pre<>view"],
450 'q' => ["g4", => ":quit current"],
451 'r' => ["g3", => "rotate down<>ward<>s"],
452 'R' => ["g3", => "rotate up<>ward<>s"],
453 's' => ["g3", => "split horiz<>ont<>al<>ly"],
455 't' => ["g3", => "go to top"],
456 'T' => ["g3 v7", => "to tab"],
457 'v' => ["g3", => "split vert<>ic<>al<>ly"],
458 'w' => ["g3", => "go to next\nWrap around"],
459 'W' => ["g3", => "go above<>/left"],
460 'x' => ["g3", => "ex<>chan<>ge"],
461 'z' => ["g3", => "close pre<>view"],
467 "\e"=> ["g7 mode", "normal mode"],
469 ']' => ["g3", => "split, :ts<>elect"],
470 '}' => ["g3", => ":ptj<>ump to tag"],
471 '^]'=> ["g3", "split, :tj<>ump"],
472 'f' => ["g4 v7", => "file in tab"],
473 'F' => ["g4 v7", => "^wgf, to line<>nr"],
477 "\e"=> ["g7 mode", "normal mode"],
479 '!' => ["g4", "external filter"],
480 ':' => ["g7 modec", "cmd on range"],
481 '<' => ["g4", "un<>indent"],
482 '=' => ['g4 undo', "re<>ind<>ent"],
483 '>' => ['g4', "ind<>ent"],
484 '~' => ["g4 v6", "toggle case"],
486 '^]'=> ["g3", "jump to tag"],
489 'a' => ['g9 modeva arg v6', "ex<>tend area"],
490 'A' => ['g6 modei v6', "ap<>pend to block"], # block
491 '^a'=> ['g4 undo v8', "incr<>ement num<>bers"],
492 'c' => ['g6 modei v6', "repl<>ace area"],
493 'C' => ['g6 modei v6', "repl<>ace full lines"], # like vS, but blocks are extended until eol
494 '^c'=> ["g7 mode", "abort"],
495 'd' => ["g4 v6", "delete area"],
496 'D' => ["g4 v6", "delete lines"],
497 'g' => ["g9 arg modevg", "extra cmds"],
498 '^g'=> ["g8", "select mode"],
499 'i' => ["g9 modeva arg v6", "extend inner a<>r<>ea"],
500 'I' => ["g6 modei v6", "insert to block"], # block
501 'J' => ["g4", "join lines"],
502 'K' => ['g4', "help sel<>ect<>ion"],
503 'o' => ["g2", "to other corner"],
504 'O' => ["g2", "to other side"],
505 '^o'=> ["g8", "visual once"], # select
506 'p' => ['g4', "repl<>ace w/ paste"],
507 'P' => ['g4', "repl<>ace w/ paste"],
508 'r' => ['g4 arg', "fill up w/ ch<>ar"],
509 'R' => \'vS', # "might change in future"
511 'S' => ['g6 modei v6', "repl<>ace lines"],
512 'u' => ["g4 v6", "lower<>case"],
513 'U' => ["g4 v6", "upper<>case"],
514 'v' => ["g8", "char<>wise"],
515 'V' => ["g8", "line<>wise"],
516 '^v'=> ["g8 v6", "block<>wise"],
519 '^x'=> ['g4 undo v8', "decr<>ement num<>bers"],
520 'y' => ["g4", "yank area"],
521 'Y' => ["g4", "yank lines"],
523 (map { $_ => \$_ } @motions, qw(
524 ^b ^d ^e ^f ^i m q ^q ^s ^u ^w ^y z ^z "
525 )), # a lot like normal mode TODO
531 "\e"=> ["g8 modev", "visual mode"],
534 '?' => ["g4 v6", => "rot13 encode"],
535 '^a'=> ['g4 undo v8', "seq. incr<>ement"],
536 '^g' => ["g1 vim6", "count region info"],
537 'J' => ['g4 v6', => "join literal<>ly"],
538 'q' => ["g4 v6", => "for<>mat"],
540 'w' => ['g4 v7', => "for<>mat still"],
541 '^x'=> ['g4 undo v8', "seq. decr<>ement"],
544 'c' => ['g4 xcommentary', => "(un)<>com<>ment\ncommentary or tComment plugin"],
545 'l' => ['g3 arg xlion', => "align to left\nlion plugin, also good for easy-align"],
546 'L' => ['g3 arg xlion', => "align to right\nlion plugin"],
550 "\e"=> ["g8 modev", "visual mode"],
555 "'" => ['g2 v7', "quoted string"],
557 '<' => ['g2 v6', => "<> block"],
559 '[' => ['g2 v6', => "[] block"],
565 'b' => ['g2 v6', => "() block"],
566 'B' => ['g2 v6', => "{} Block"],
567 'p' => ['g2 v6', => "para<>graph"],
568 's' => ['g2 v6', => "senten<>ce"],
569 't' => ['g2 v7', => "xml tag block"],
570 'w' => ['g2 v6', => "word"],
571 'W' => ['g2 v6', => '<span style="font-variant:small-caps">word</span>'],
575 # desc => "command-line mode",
580 # '^a' => ["", "complete"], #todo
581 # '^b' => ["g3", "bol"],
583 # '^d' => ["", "complete"], #todo
584 # '^e' => ["g3", "eol"],
586 # '^j' => ["g4", "execute cmd"],
588 # '^l' => ["", "complete"], #todo
589 # '^n' => ["", "complete"], #todo
590 # '^p' => ["", "complete"], #todo
591 # '^r' => \'i^r', # and then some...
592 # ## ["g4 arg v6", "insert register"],
597 # '^y' => ["g4", "selec<>tion to clip<>b<>oard"],
601 "\e" => ["g7 mode", "normal mode"],
603 '^@' => ["g4", => "last insert"],
604 '^^' => ["g4 v6", => "toggle :lmap usag<>e"],
606 '^]' => ["g4 v6", => "abbrev<>iate"],
607 '^_' => ["g4 v6", => "toggle lang<>uage"],
610 '^a' => ["g4 v6", => "insert prev<>ious"],
611 '^b' => ["no v6", => "former i^_"],
612 '^c' => ["g7 mode", => "abort, no abbr"],
613 '^d' => ['g4', => "un<>ind<>ent"],
614 '^e' => ["g4 v6", => "ins char below"],
615 '^f' => ['g4', => "set indent<>ation"],
616 '^g' => ["g9 modei^g arg", => "extra cmds"],
617 '^h' => ["g4", => "back<>space"],
618 '^i' => ["g4", => "tab"],
619 '^j' => ["g4", => "enter"],
620 '^k' => ['g4 arg arg v6 linkdigraphs', => "di<>graph\nKey code"],
621 '^l' => ["g7 mode v6", => "<em>im</em> leave ins mode"], # insertmode only
622 '^m' => ["g4", => "enter"],
623 '^n' => ["g2 v6", => "find next keyword"],
624 '^o' => ['g4', => "exec<>ute cmd"],
625 '^p' => ["g2 v6", => "find prev keyword"],
626 '^q' => \'^q', # or i^v
627 '^r' => ['g4 arg v6', "insert reg<>ister"],
629 '^t' => ["g4", => "indent"],
630 '^u' => ["g4", => "delete line"],
631 '^v' => ['g4 linkcharset', => "literal or ch<>ar<>cod<>e\nVerbatim or by Value"],
632 '^w' => ["g4", => "delete word back"],
633 '^x' => ['g9 arg modei^x v6', => "ex<>pand mode"],
634 '^y' => ["g4 v6", => "ins char above"],
635 '^z' => ["g1 v6", => ":sus<>pend in <em>im</em>"], # insertmode only
641 "\e"=> ['g6 modei', "insert mode"],
643 'k' => ['g2', => "<up> start col<>umn"],
644 'j' => ['g2', => "<down> start col<>umn"],
645 'u' => ['g4', => "break undo seq<>uence"],
646 'U' => ['g4 v8', => "keep undo seq<>uence"],
647 # other keys (even esc) are not recognized
649 's' => ['g4 arg xsurround', => "sur<>round\nsurround plugin"],
655 "\e" => ["g7 mode", "normal mode"], # yes, it really leaves insert mode
658 '^]' => ['g4', => "tag comp<>l<>et<>e"],
659 '^d' => ['g4', => "def<>ine compl<>et<>e"],
660 '^e' => ["g3", => "window up"],
661 '^f' => ['g4', => "file comp<>l<>et<>e"],
662 '^i' => ['g4', => "ident comp<>l<>et<>e"],
663 '^k' => ['g4', => "dict comp<>l<>et<>e"],
664 '^l' => ['g4', => "line comp<>l<>et<>e"],
665 '^n' => ['g4', => "next comp<>l<>et<>e"],
666 '^o' => ['g4 v7', => "omni comp<>l<>et<>e"],
667 '^p' => ['g4', => "prev comp<>l<>ete"],
668 '^s' => ['g4', => "spell sugg<>est"],
670 '^t' => ['g4', => "thes<>aur<>us compl<>et<>e"],
671 '^u' => ['g4 v7', => "cus<>tom comp<>l<>et<>e"],
672 '^v' => ['g4', => "ex cmd compl<>et<>e"],
673 '^y' => ["g3", => "window down"],
679 "\e"=> ["g7 mode", "normal mode"],
682 'd' => ['g4', 'delete line'],
683 'o' => ['g5', 'diff obtain'],
684 'p' => ['g5', 'diff put'],
685 's' => ['g4 arg xsurround', 'delete surr<>oun<>d<>ing'],
687 (map { ($_ => [\$_, "delete to <alias>$_"]) } qw( g z [ ] )), # modes
690 (map { $_ => \$_ } qw( \\ ^\\ ^q ^s ^z )),
704 'W' => ['g4', 'delete <span style="font-variant:small-caps">word</span>'],
705 'b' => ['g4', 'delete <left> word'],
706 'B' => ['g4', 'delete <left> <span style="font-variant:small-caps">word</span>'],
707 'e' => ['g4', 'delete word e<>nd'],
708 'E' => ['g4', 'delete <span style="font-variant:small-caps">word</span> e<>nd'],
709 'G' => ['g4', 'delete to line<>/eof'],
710 'H' => ['g4', 'delete to top'],
711 'j' => ['g4', 'delete <down> line'],
712 'k' => ['g4', 'delete <up> line'],
713 'L' => ['g4', 'delete to bottom'],
714 'M' => ['g4', 'delete to middle'],
715 'n' => ['g4', 'delete to next res<>ult'],
716 'N' => ['g4', 'delete to prev res<>ult'],
717 'w' => ['g4', 'delete word'],
718 ',' => ['g4', 'delete to prev ch<>ar<>acter'],
719 ';' => ['g4', 'delete to next ch<>ar<>acter'],
720 '*' => ['g4', 'delete to find'],
721 '#' => ['g4', 'delete <left> to find'],
722 '%' => ['g4', 'delete to line pct'],
723 '^' => ['g4', 'delete to soft bol'],
724 '0' => ['g4', 'delete to bol'],
725 '|' => ['g4', 'delete to col<>umn'],
726 '{' => ['g4', 'delete <left> par<>agr<>aph'],
727 '}' => ['g4', 'delete rest of p<>ar<>agr<>aph'],
728 '(' => ['g4', 'delete <left> senten<>ce'],
729 ')' => ['g4', 'delete rest of s<>en<>ten<>ce'],
731 # @motions with option
732 'f' => ['g4 arg', 'delete to char<>acter'],
733 'F' => ['g4 arg', 'delete <left> to char<>acter'],
734 't' => ['g4 arg', 'delete upto ch<>ar<>acter'],
735 'T' => ['g4 arg', 'delete <left> upto ch<>ar<>acter'],
736 '`' => ['g4 arg', 'delete to mark'],
737 "'" => ['g4 arg', 'delete lines to m<>ark'],
738 '/' => ['g4 arg', 'delete to res<>ult'],
739 '?' => ['g4 arg', 'delete <left> to res<>ult'],
741 # motions from virtual
742 'a' => ['g9 modeva arg v6 alias', 'delete area'], # va
743 'i' => ['g9 modeva arg v6 alias', 'delete inner'], # vi
746 # y => { 'o' => ['g9 arg xunimpaired', "toggle option\nunimpaired plugin"] }, # TODO
748 # TODO: mode/ (command-line)
749 # XXX ex mode if you want to go completely wild