From 8da111b671c9914450077a1ec506964e70dceb40 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sun, 25 Feb 2007 00:10:56 +0100 Subject: [PATCH] vim keyboard page (initial commit) --- base.css | 209 ++++++++++++++ circus.css | 14 + dark.css | 30 ++ index.plp | 261 ++++++++++++++++++ mono.css | 17 ++ vim-cheat.html | 706 +++++++++++++++++++++++++++++++++++++++++++++++ vim-cheat.tar.gz | Bin 0 -> 10546 bytes vim-cmds.inc.pl | 523 +++++++++++++++++++++++++++++++++++ vim-keys.inc.pl | 94 +++++++ 9 files changed, 1854 insertions(+) create mode 100644 base.css create mode 100644 circus.css create mode 100644 dark.css create mode 100644 index.plp create mode 100644 mono.css create mode 100644 vim-cheat.html create mode 100644 vim-cheat.tar.gz create mode 100644 vim-cmds.inc.pl create mode 100644 vim-keys.inc.pl diff --git a/base.css b/base.css new file mode 100644 index 0000000..40d0cb1 --- /dev/null +++ b/base.css @@ -0,0 +1,209 @@ +body { + background: #FFF; + color: #000; + font-size: 90%; +} +a, a:visited { + color: #000; + text-decoration: underline; +} +a:active, a:hover { + color: #00F; + text-decoration: none; +} +h1, h2 { + text-align: center; + font-size: 200%; + margin: 0; +} +h2 { + font-size: 125%; + margin-bottom: -4ex; +} + +/* "keyboard" (list of keys) */ + +ul { + margin: 0; + padding: 0; + list-style: none; +} +li.row1 {margin-left: 7em} /* row offsets relative to ~6em key width */ +li.row2 {margin-left: 8em} +li.row3 {margin-left: 10em} /* should actually align to next key on row0 */ + /* ...however rows>=1 are shifted a bit, to make space */ + +li.row { + clear: both; /* start new row block (keyboard row) */ + padding-top: 1ex; +} +li.row > ul > li { + clear: both; /* start new row (screen row) */ +} /* css2 selectors ignored by msie<=6 */ +li.row ul ul { + clear: both; +} /* css1 alternative as well (doesn't match in gecko for some reason) */ + +h3 {display: none} /* semantic details (non-css/js) */ +li.mode {display: none} /* initially hidden (only show interactively (js)) */ + +/* individual keys */ + +dl.legend dt, +ul.keys li { + float: left; + width: 6.2em; + line-height: 2.25ex; /* a little terser (seems to be gecko's default anyway) */ + height: 4.5ex; /* 2 lines */ + overflow: hidden; + margin: 0 2px -1px; + text-align: center; + border: 1px solid #000; + border-radius: 4px; + -moz-border-radius: 4px; +} +ul.keys li b { + float: left; + font-size: 200%; + line-height: 2.5ex; /* inherits otherwise */ + padding-left: 2px; +} +ul.keys.omni li { + width: 8.5em; +} + +/* fine tuning of special occurrences */ + +ul.keys li b[title] { /* mnemonic hover */ + cursor: help; +} +ul.keys li[onclick]:hover { /* link */ + cursor: pointer; +} +ul.keys.ctrl li b, +ul.keys.lead li b { /* char with ctrl or leading key */ + font-size: 100%; /* space is too limited for 2+ double-sized chars */ + line-height: 5ex; /* keep double height though */ +} +ul.keys.ctrl li b small { /* meta key indicator */ + font-size: 70%; + font-weight: normal; /* nice and subtle */ +} + +/* key type colorization */ + +.pm {background: #BFB} /* motion */ +.po {background: #DFA} /* window */ +.co {background: #FFA} /* command */ +.ci {background: #BFE} /* info */ +.mi {background: #FCA} /* insert mode */ +.mo {background: #FCC} /* mode */ +.mv {background: #ECE} /* visual mode */ +.me {background: #CCF} /* key mode */ + +.mi[onclick]:hover {background: #F97} +.mo[onclick]:hover {background: #F88} +.me[onclick]:hover {background: #99F} +.mv[onclick]:hover {background: #D9D} + +.no { + background: #EEE; +} +ul.keys li.ni { + border: 0; + padding: 1px; /* same size as borderlessless keys */ +} + +dl.legend dt.vim, +ul.keys li.vim { + border-style: dashed; + -moz-border-radius: 0; /* incompatible with border-style */ +} +dl.legend dt.vim7, +ul.keys li.vim7 { + border-style: dotted; + -moz-border-radius: 0; +} + +/* footer */ + +hr { + clear: both; + visibility: hidden; + height: 2ex; + margin: 0; +} + +p.footer { + margin: 0; + text-align: center; +} + +/* l/r help columns */ + +.help { + display: table; + width: 100%; +} +.help > * { + display: table-cell; + width: 20%; +} + +.left dl.legend { + margin-left: 6.2em; +} +.left dl.legend dt { + margin-left: -6.2em; /* msie<=6 multiply this by two for some reason */ + float: left; + clear: left; +} +.left dl.legend dd { + float: left; /* align next to dt (except msie<=7 does just the opposite) */ +} +.right dl.legend { + margin-right: 6.2em; +} +.right dl.legend dt { + margin-right: -6.2em; + float: right; + clear: right; +} +.right dl.legend dd { + float: right; +} +.right { + text-align: right; +} + +/* help/legend */ + +dl.legend dt { + margin: 0 0 1px; /* distinct keys */ + height: auto; /* not key-height */ + padding: 2px 0; +} +dl.legend dd { + margin: 3px 0.4em 0; /* align text (add dt border+padding height) */ +} + +dl.legend-options dt { + background: #CCC; +} + +ul.legend-set { + clear: right; + padding-top: 1ex; +} +ul.legend-set li { + margin: 6px 0; /* similar to dl legends */ +} + +/* printing hints */ + +@page {size: landscape} + +@media print { + ul.legend-set {display: none} +} + diff --git a/circus.css b/circus.css new file mode 100644 index 0000000..84acc95 --- /dev/null +++ b/circus.css @@ -0,0 +1,14 @@ +.pm {background: #8F8} /* motion */ +.po {background: #CF8} /* window */ +.co {background: #FF8} /* command */ +.ci {background: #8FD} /* info */ +.mi {background: #FB8} /* insert mode */ +.mo {background: #F77} /* mode */ +.mv {background: #E8E} /* visual mode */ +.me {background: #99F} /* key mode */ + +/* hovers todo */ +.mo[onclick]:hover { + background: #FCC; +} + diff --git a/dark.css b/dark.css new file mode 100644 index 0000000..6f1feb4 --- /dev/null +++ b/dark.css @@ -0,0 +1,30 @@ +body { + background: #000; + color: #CCC; +} +a, a:visited { + color: #BBB; +} + +dl.legend dt, +ul.keys li { + border-color: #888; +} +dl.legend-options dt {background: #333} + +.pm {background: #040} /* motion */ +.po {background: #340} /* window */ +.ci {background: #044} /* info */ +.co {background: #440} /* command */ +.mi {background: #530} /* ins */ +.mo {background: #500} /* state */ +.mv {background: #503} /* visual */ +.me {background: #205} /* mode */ + +.mi[onclick]:hover, +.mo[onclick]:hover, +.mv[onclick]:hover, +.me[onclick]:hover { + color: #000; /* on default (light) background hover */ +} /* mode link */ + diff --git a/index.plp b/index.plp new file mode 100644 index 0000000..096a35f --- /dev/null +++ b/index.plp @@ -0,0 +1,261 @@ +<: +use utf8; +use strict; +use warnings; +no warnings "qw"; # you know what you doing +no warnings "uninitialized"; # save some useless checks for more legible code + +# 2006-03-29 ~20:00 started work +# 2006-03-30 11:58 html version +# 2006-05-20 03:44 perl version +# 2007-02-07 07:34 cleaned up + +# TODO: +# - use js to detect optimal key size +# - style for .undo (maybe just some css3-only shadow) +# - fix mode switching in konq (used to work) +# only when s present?! use browser sniffing to force ?ascii=0 :( +# - safari loading bug? +# - good case for gzip compression +# - link to source tarball +# - default stylesheet selectable +# - catch and execute pressed keys +# - ghosting option documented and default +# - option to follow aliases (default on?) +# - custom row combinations (eg for comparing different modes) + +our $ascii = 0; +if (exists $get{ascii}) { + $ascii = $get{ascii} ne "0"; # manual override +} elsif (defined $ENV{HTTP_ACCEPT_CHARSET}) { + $ascii = 1; + for (split ",", $ENV{HTTP_ACCEPT_CHARSET}) { + $ascii = 0, last if $_ eq "*" or m/utf-?8/i; + } +} + +my $charset = $ascii ? "us-ascii" : "utf-8"; +my $ctype = "text/html; charset=$charset"; +$header{content_type} = $ctype; + +:> + + + +vi cheat sheet + + + +<: + my %styles = map {$_ => $_} qw(dark circus mono); + our $style = exists $get{style} && $styles{$get{style}} || "light"; + printf(qq{\n}, + $_ eq $style ? "stylesheet" : "alternate stylesheet", "$_.css", $_ + ) for keys %styles; + + our $showkeys = exists $get{keys} && $get{keys} ne "0"; + print "\n" unless $showkeys; + print "\n" + if $showkeys and $get{keys} eq "ghost"; +:> + + + + + +

vi/vim cheat sheet

+ +

normal mode (default)

+ + + +
+ +
+
+
+
info +
Info command: shows/does something without altering anything. +
motion +
Moves the cursor, or defines the range for an operator (<:= $sign{motion} :>). +
positioning +
Other movement (jumps, window (re)positioning). +
command +
Direct action command. +
ins mode +
Enters Insert or Replace mode. +
mode +
Enters a different mode. +
vis mode +
Enters Visual or Select mode. +
key cmd +
Additional key commands (click for overview). +
+
+ +
+
+
key<:= $sign{arg} :> +
Commands with a dot need a char argument afterwards. +
key<:= $sign{motion} :> +
Requires a motion afterwards, operates between cursor and destination. +
vim +
Not in original Vi (assessment incomplete). +
vim7 +
New in vim version 7.x. +
+ +
    +
  • keyboard map is + <:= $get{map} ? "set to " : "" :><:= $map :> +
  • ascii mode is + <:= exists $get{ascii} ? "forced " : "" :><:= + $ascii ? "on" : "off" :> +
  • keys are + <:= $showkeys ? "always shown" : "hidden if unassigned" :><:= + exists $get{keys} ? "" : " by default" :> +
  • default style is + <:= defined $get{style} ? "set to " : "" :><:= $style :> +
+
+
+ + + + diff --git a/mono.css b/mono.css new file mode 100644 index 0000000..5e6168b --- /dev/null +++ b/mono.css @@ -0,0 +1,17 @@ +dl.legend-options dt {background: #EEE} + +.pm {background: #FFF} /* motion */ +.po {background: #DDD} /* window */ +.co {background: #AAA} /* command */ +.ci {background: #777} /* info */ +.mi {background: #888; color: #FFF} /* insert mode */ +.mv {background: #444; color: #FFF} /* visual mode */ +.mo {background: #000; color: #FFF} /* mode */ +.me {background: #000; color: #AAA} /* key mode */ + +ul.keys li[onclick]:hover { + background: #888; + color: #000; + border-color: #444; +} + diff --git a/vim-cheat.html b/vim-cheat.html new file mode 100644 index 0000000..9b3330d --- /dev/null +++ b/vim-cheat.html @@ -0,0 +1,706 @@ + + + + + +vi/vim cheat sheet + + + + + + +

vi/vim cheat sheet

+ + + +
+
+
motion
Moves the cursor, or defines the range for an operator. +
command
Direct action command, if red, it enters insert mode. +
operator
Requires a motion afterwards, operates between cursor and destination. +
mode +
q·
Commands with a dot need a char argument afterwards. +
+
+ + diff --git a/vim-cheat.tar.gz b/vim-cheat.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0e6e7b45d1432e2dea176fd257ec62097108adf8 GIT binary patch literal 10546 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 Ay#N3J literal 0 HcmV?d00001 diff --git a/vim-cmds.inc.pl b/vim-cmds.inc.pl new file mode 100644 index 0000000..bc05a94 --- /dev/null +++ b/vim-cmds.inc.pl @@ -0,0 +1,523 @@ +use utf8; + +'' => { + desc => "normal mode", + + '~' => ["toggle case", "co undo"], + '!' => ["extern$sign{_}al filter", "co argm undo modec"], + '@' => ["play macro", "co arg undo"], + '#' => ["rev. find word", "pm vim"], + '$' => ["eol", "pm"], + '%' => ["goto match", "pm"], + '^' => ['"soft" bol', "pm"], + '&' => ["repeat :s", "co undo"], + '*' => ["find word", "pm vim"], + '(' => ["begin sentence", "pm"], + ')' => ["end sentence", "pm"], + '_' => ['"soft" bol down', "pm"], + '+' => ["next line", "pm"], + '`' => ["goto mark", "pm arg"], + '0' => ['"hard" bol', "pm"], + '^^'=> ["edit alt. file", "co"], + '-' => ["prev line", "pm"], + '=' => ["auto form$sign{_}at", "co argm undo"], + '?' => ["find rev.", "pm arg modec"], + ';' => ["repeat t/T/f/F", "pm"], + ':' => ["ex cmd line", "co modec"], + "'" => ["goto mark bol", "pm arg"], + '"' => ["use register", "co arg"], + '\\' => ["not used", "me arg"], + '^\\' => ["to mode/$sign{_}ext$sign{_}ens$sign{_}ion$sign{_}s", "mo arg"], + ',' => ["reverse t/T/f/F", "pm"], + '<' => ["un­$sign{_}indent", "co argm undo"], + '.' => ["repeat cmd", "co undo"], + '>' => ["ident", "co argm undo"], + '/' => ["find", "pm arg modec"], + '[' => ["move back$sign{_}ward$sign{_}s", "me arg mode["], + '{' => ["begin parag.", "pm"], + ']' => ["move forw$sign{_}ard", "me arg mode]"], + '}' => ["end parag.", "pm"], + '^]'=> ["go to tag", "po"], + '|' => ["bol/$sign{_}goto col", "pm"], + + 'a' => ["append", "mi undo modei"], + 'A' => ["append to eol", "mi undo modei"], + '^a'=> ["incr$sign{_}ement", "co undo", "Add one"], + 'b' => ["prev word", "pm", "Back"], + 'B' => ['prev word', "pm"], + '^b'=> ["page up", "pm"], + 'c' => ["change", "mi argm undo modei"], + 'C' => ["change to eol", "mi undo modei"], + '^c'=> ["abort", "co"], + 'd' => ["delete", "co argm undo"], + 'D' => ["delete to eol", "co undo"], + '^d'=> ["scroll down", "po"], + 'e' => ["end word", "pm"], + 'E' => ['end word', "pm"], + '^e'=> ["window down", "po", "Extra line"], + 'f' => ["fwd to char", "pm arg"], + 'F' => ['backwd to char', "pm arg"], + '^f'=> ["page down", "pm", "page Forward"], + 'g' => ["extra cmds", "me arg modeg"], + 'G' => ["eof/$sign{_}goto ln", "pm"], + '^g'=> [":file (info)", "ci"], + 'h' => [$sign{left}, "pm"], + 'H' => ["screen top", "pm"], + '^h'=> "h", + 'i' => ["insert mode", "mi undo modei"], + 'I' => ["insert at bol", "mi undo modei"], + '^i'=> ["jump to newer", "pm"], + 'j' => [$sign{down}, "pm"], + 'J' => ["join lines", "co undo"], + '^j'=> "j", + 'k' => [$sign{up}, "pm"], + 'K' => ["help", "co", "looKup Keyword"], + 'l' => [$sign{right}, "pm"], + 'L' => ["screen bottom", "pm", "Lowermost Line"], + '^l'=> ["redraw", "ci"], + 'm' => ["set mark", "co arg"], + 'M' => ["screen mid'l", "pm"], + '^m'=> "+", + 'n' => ["next find", "pm"], + 'N' => ["prev find", "pm"], + '^n'=> "j", + 'o' => ["open below", "mi undo modei"], + 'O' => ["open above", "mi undo modei"], + '^o'=> ["jump to older", "pm"], + 'p' => ["paste after", "co undo"], + 'P' => ["paste before", "co undo"], + '^p'=> "k", + 'q' => ["record macro", "mo arg", "Queue seQuence"], + 'Q' => ["ex mode", "mo"], + '^q'=> ["(xon)", "ci"], # or ^v + 'r' => ["replace char", "co arg undo"], + 'R' => ["replace mode", "mi undo modei"], + '^r'=> ["redo", "co undo"], + 's' => ["subst char", "mi undo modei"], + 'S' => ["subst line", "mi undo modei"], + '^s'=> ["(xoff)", "ci"], + 't' => ["till char", "pm arg"], + 'T' => ["back till char", "pm"], + '^t'=> ["previous tag", "po"], + 'u' => ["undo", "co undo"], + 'U' => ["undo line", "co undo"], + '^u'=> ["scroll up", "po"], + 'v' => ["visual mode", "mv modev"], + 'V' => ["visual lines", "mv modev"], + '^v'=> ["visual block", "mv modev"], + 'w' => ["next word", "pm"], + 'W' => ['next word', "pm"], + '^w'=> ["window cmds", "me arg mode^w"], + 'x' => ["delete char", "co undo"], + 'X' => ["back­$sign{_}space", "co undo"], + '^x'=> ["subs$sign{_}tract", "co undo"], + 'y' => ["yank", "co argm"], + 'Y' => ["yank line", "co"], + '^y'=> ["window up", "po"], + 'z' => ["extra cmds", "me arg modez"], + 'Z' => ["quit", "me arg modeZ"], + '^z'=> [":sus$sign{_}pend", "ci"], +}, # normal mode + +g => { + desc => "extended commands (g)", + lead => "g", + + '~' => ["toggle case", "co argm vim"], + '@' => ["operat$sign{_}or$sign{_}func", "co vim7"], + '#' => ["rev. find string", "pm vim"], + '$' => ["virt$sign{_}ual eol", "pm"], + '^' => [qq'"soft" bol v$sign{_}irt$sign{_}ual', "pm vim"], + '&' => ["repeat :s global$sign{_}ly", "co", "Global substitute"], + '*' => ["find string", "pm vim"], + '_' => [qq'"soft" eol', "pm vim"], + '+' => ["later undo", "co vim7"], + '`' => ["to mark keepj$sign{_}umps", "pm vim arg"], + '8' => ["char hex val$sign{_}ue$sign{_}s", "ci"], + '0' => ["virtual bol", "pm vim"], + '-' => ["earlier undo", "co vim7"], + '^['=> ["esc", "mo mode"], + ']' => ["go to tselect", "po"], + '^]'=> ["go to tjump", "po"], + ';' => ["to prev change pos", "pm"], + "'" => ["to mark keepj$sign{_}umps", "pm vim arg"], + '<' => ["see prev cmd output", "co vim7"], + '?' => ["rot13 encode", "co argm vim"], + ',' => ["to next change pos", "pm"], + + 'a' => ["char value", "ci", "Get Ascii value"], + '^a'=> ["mem usage stats", "ci"], + 'd' => ["local declar$sign{_}ation", "pm vim"], + 'D' => ["global declar$sign{_}ation", "pm vim"], + 'e' => ["back to word end", "pm"], + 'E' => [qq'back to word end', "pm"], + 'f' => ["edit file at cur$sign{_}sor", "co vim", "Goto File"], + 'F' => ["edit file + jump", "co vim7"], + 'g' => ["first line", "pm"], + '^g'=> ["cursor pos info", "ci"], + 'h' => ["select mode", "mv modev", "Get Highlighted"], + 'H' => ["select lines", "mv modev", "Get Highlighted"], + '^h'=> ["select block", "mv modev", "Get Highlighted"], + 'i' => ["insert at last pos", "mi undo modei"], + 'I' => ["insert at soft bol", "mi undo modei"], + 'j' => ["display line down", "pm vim"], + 'J' => ["join leave spac$sign{_}ing", "co"], + 'k' => ["display line up", "pm vim"], + 'm' => ["g0 right half scr$sign{_}een", "pm vim"], + 'o' => [":goto (byte)", "pm"], + 'p' => ["paste no move", "co undo"], + 'P' => ["paste before no move", "co"], + 'q' => ["format", "co argm"], + 'Q' => ["ex mode manual :", "mo vim"], + 'r' => ["replace char vir.", "co arg"], + 'R' => ["replace mode v$sign{_}ir$sign{_}t$sign{_}ual", "mi undo modei"], + 's' => ["sleep", "ci", "Go to Sleep"], + 't' => ["next tab", "po vim7", "Goto Tab"], + 'T' => ["previous tab", "po vim7"], + 'u' => ["lower$sign{_}case", "co argm vim"], # XXX undo? + 'U' => ["upper$sign{_}case", "co undo argm vim"], + 'v' => ["previous visual mode", "mv modev", "precedinG Visual"], + 'V' => ["avoid reselect$sign{_}ion", "co"], + 'w' => ["format remain cursor", "co argm vim7"], + 'x' => ["Netrw$sign{_}BrowseX", "co vim7"], +}, # mode g + +Z => { + desc => "additional commands (z)", + lead => "Z", + + '^['=> ["esc", "mo mode"], + + 'Q' => [" :q!", "co vim"], + 'Z' => [" :wq", "co"], +}, # mode Z + +z => { + desc => "quit commands", + lead => "z", + + '^' => ["page above", "po"], + '+' => ["page below", "po"], + '-' => ["line at bottom bol", "po", "don't (-) see any further"], + '=' => ["spelling suggest$sign{_}ions", "co vim7"], + '.' => ["line at center bol", "po"], + '^['=> ["esc", "mo mode"], + + 'a' => ["toggle fold", "co vim folding"], + 'A' => ["toggle fold rec$sign{_}urs$sign{_}ive$sign{_}ly", "co vim folding"], + 'b' => ["line at bot. bol", "po"], + 'c' => ["close fold", "co vim folding"], + 'C' => ["close folds rec$sign{_}curs$sign{_}ive$sign{_}ly", "co vim folding"], + 'd' => ["delete fold", "co vim folding"], + 'D' => ["delete folds rec$sign{_}urs$sign{_}ive", "co vim folding"], + 'e' => ["cursor at right side", "po"], + 'E' => ["eliminate folds", "co vim folding"], + 'f' => ["create fold", "co argm vim folding"], + 'F' => ["fold lines", "co vim folding"], + 'g' => ["correct spelling", "co vim7", "Good word"], + 'G' => ["add spelling", "co vim7"], + 'h' => ["scroll $sign{right}", "po"], + 'H' => ["scroll $sign{right} half scr$sign{_}een", "po"], + 'i' => ["toggle all folds", "co vim folding"], + 'j' => ["next fold start", "pm vim folding"], + 'k' => ["prev fold end", "pm vim folding"], + 'l' => ["scroll $sign{left}", "po"], + 'L' => ["scroll $sign{left} half scr$sign{_}een", "po"], + '^m'=> ["line at top bol", "po"], + 'm' => ["fold more", "co vim folding"], + 'M' => ["close all folds", "co vim folding"], + 'n' => ["fold none", "co vim folding"], + 'N' => ["fold normal", "co vim folding"], + 'o' => ["open fold", "co vim folding"], + 'O' => ["open folds rec$sign{_}urs$sign{_}ive$sign{_}ly", "co vim folding"], + 'r' => ["reduce folding", "co vim folding"], + 'R' => ["open all folds", "co vim folding"], + 's' => ["cursor at left side", "po"], + 't' => ["line at top", "po"], + 'u' => ["undo spelling", "co arg vim7"], + 'v' => ["unfold cursor line", "co vim folding"], + 'w' => ["add misspell$sign{_}ing", "co vim7", "Wrong word"], + 'W' => ["temp misspell$sign{_}ing", "co vim7"], + 'x' => ["update folds", "co vim folding"], + 'X' => ["reapply folds", "co vim folding"], + 'z' => ["line at center", "po", "Zee Zenter (with an accent)"], +}, # mode z + +'[' => { + desc => "backward search commands ([)", + lead => "[", + + "`" => ["previous lc mark", "pm vim"], + '#' => ["previous open #if$sign{_}/#else", "pm"], + '(' => ["previous open (", "pm"], + '*' => "[/", + '/' => ["start of C comm$sign{_}ent", "pm"], + "'" => "[` ^", # vim + '{' => ["previous open {", "pm"], + '[' => ["section back$sign{_}ward$sign{_}s", "pm"], + '^['=> ["esc", "mo mode"], + ']' => [qq'section back$sign{_}ward$sign{_}s', "pm"], + + 'c' => ["start of change backw$sign{_}ards", "pm"], + 'd' => ["list define", "co"], + 'D' => ["list defines", "co"], + '^d'=> ["first #define", "po"], + 'f' => "gf", # deprecated + 'i' => ["list line", "co"], + 'I' => ["list lines", "co"], + '^i'=> ["first occur$sign{_}renc$sign{_}e", "po"], + 'm' => ["start of funct$sign{_}ion", "pm"], + 'p' => ["P but reindent", "co"], + 'P' => ["[p", "co"], + 's' => ["last mis$sign{_}spell$sign{_}ing", "po vim7"], + 'S' => ["last bad word", "po vim7"], + 'z' => ["start of open fold", "pm vim folding"], +}, # mode [ + +']' => { + desc => "forward search commands (])", + lead => "]", + + "`" => ["next lc mark", "pm vim"], + '#' => ["next open #endif$sign{_}/#else", "pm"], + ')' => ["next open )", "pm"], + '*' => "]/", + "'" => "]` ^", # vim + '/' => ["end of C comm$sign{_}ent", "pm"], + '[' => [qq'section forw$sign{_}ard', "pm"], + '^['=> ["esc", "mo mode"], + ']' => ["section forw$sign{_}ard", "pm"], + '}' => ["next open }", "pm"], + + 'c' => ["start of change forw$sign{_}ards", "pm"], + 'd' => ["list define", "co"], + 'D' => ["list defines", "co"], + '^d'=> ["first #define", "po"], + 'f' => "gf", # deprecated + 'i' => ["list line", "co"], + 'I' => ["list lines", "co"], + '^i'=> ["first occur$sign{_}renc$sign{_}e", "po"], + 'm' => ["end of funct$sign{_}ion", "pm"], + 'p' => ["p but reindent", "co"], + 'P' => "[p", + 's' => ["next mis$sign{_}spell$sign{_}ing", "po vim7"], + 'S' => ["next bad word", "po vim7"], + 'z' => ["end of open fold", "pm vim folding"], +}, # mode ] + +'^w' => { + desc => "window commands (ctrl-w)", + lead => $ascii ? "'w" : "ŵ", + + '<' => ["decrease width", "po"], + '>' => ["increase width", "po"], + '^' => ["split, edit alt file", "co"], + '_' => ["set height", "po"], + '+' => ["increase height", "po"], + '-' => ["decrease height", "po"], + '=' => ["same height", "po"], + '^['=> ["esc", "mo mode"], + ']' => ["split, to tag", "po"], + '}' => ["tag in preview", "po"], + '|' => ["set width", "po"], + + 'b' => ["go to bottom", "po"], + 'c' => [":close", "po"], + '^c'=> ["abort", "mo mode"], + 'd' => ["split, to def$sign{_}inition", "po"], + 'f' => ["split, edit file", "co"], + 'F' => ["^wf, jump to line", "co vim7"], + 'g' => ["extra cmds", "me arg mode^wg"], + 'h' => ["go left", "po"], + 'H' => ["move far left", "po"], + 'i' => ["split, to decl of id$sign{_}ent$sign{_}ifier", "po"], + 'j' => ["go down", "po"], + 'J' => ["move to bottom", "po"], + 'k' => ["go up", "po"], + 'K' => ["move to top", "po"], + 'l' => ["go right", "po"], + 'L' => ["move far right", "po"], + 'n' => ["open new", "co"], + 'o' => [":only current", "po"], + 'p' => ["go to previous", "po"], + 'P' => ["go to preview", "po"], + 'q' => [":quit current", "co"], + 'r' => ["rotate down$sign{_}ward$sign{_}s", "po"], + 'R' => ["rotate up$sign{_}ward$sign{_}s", "po"], + 's' => ["split horiz$sign{_}ont$sign{_}al$sign{_}ly", "po"], + 'S' => "^ws", + 't' => ["go to top", "po"], + 'v' => ["split vertical$sign{_}ly", "po"], + 'w' => ["go to next", "po", "Wrap around"], + 'W' => ["go above$sign{_}/left", "po"], + 'x' => ["ex$sign{_}change", "po"], + 'z' => ["close preview", "po"], +}, # mode ^w + +'^wg' => { + desc => "extended window commands (ctrl-w g)", + lead => $ascii ? "'wg" : "ŵg", + + '^['=> ["esc", "mo mode"], + ']' => ["split, :tselect", "po"], + '}' => [":ptjump to tag", "po"], + '^]'=> ["split, :tjump", "po"], + 'f' => ["edit file in tab", "co vim7"], + 'F' => ["^wgf, to line$sign{_}nr", "co vim7"], +}, # mode ^w g + +v => { + desc => "visual mode", + + '!' => ["external filter", "co"], + ':' => ["cmd on range", "mo modec"], + '<' => ["un$sign{_}indent", "co"], + '=' => ["equalprg filter", "co"], + '>' => ["indent", "co"], + '~' => ["toggle case", "co vim"], + '^['=> ["esc", "mo mode"], + '^]'=> ["jump to tag", "po"], + + 'a' => ["extend area", "me arg"], # XXX mode + 'A' => ["append to block", "mi modei"], # block + 'c' => ["replace area", "mi modei vim"], + 'C' => ["replace lines", "mi modei vim"], + '^c'=> ["abort", "mo mode"], + 'd' => ["delete area", "co vim"], + 'D' => ["delete lines", "co vim"], + 'g' => ["extra cmds", "me arg modevg"], + '^g'=> ["select mode", "mv"], + '^h'=> ["delete area", "co"], # select mode only + 'i' => ["extend area", "me arg"], + 'I' => ["insert to block", "mi modei"], # block + 'J' => ["join lines", "co"], + 'K' => ["keyword$sign{_}prg", "co"], + 'o' => ["to other corner", "pm"], + 'O' => ["to other side", "pm"], + '^o'=> ["visual once", "mv"], # select + 'p' => ["replace w/ paste", "co"], + 'P' => ["replace w/ paste", "co"], + '^q'=> "^q", + 'r' => ["replace chars", "co arg"], + 'R' => "vS", # "might change in future" + '^s'=> "^s", + 's' => "vc", + 'S' => ["replace full lines", "mi modei vim"], + 'u' => ["lower$sign{_}case", "co vim"], + 'U' => ["upper$sign{_}case", "co vim"], + 'v' => ["char$sign{_}wise", "mv"], + 'V' => ["line$sign{_}wise", "mv"], + '^v'=> ["block$sign{_}wise", "mv"], + 'x' => "vd", + 'X' => "vD", + 'y' => ["yank area", "co"], + 'Y' => ["yank lines", "co"], + + map {$_ => $_} qw( + b B ^b ^d e E ^e f F ^f G h H ^i j ^j k l L m M ^m + n N ^n ^p q ^s t T ^u w W ^w ^y z ^z + ` # $ % ^ * ( 0 ) [ { ] } ; / ? + - _ | + ) # a lot like normal mode +}, # mode v + +vg => { + desc => "extended visual commands (v g)", + lead => "g", + + '^['=> ["esc", "mv modev"], + '?' => ["rot13 encode", "co vim"], + 'J' => ["join leave spacing", "co vim"], + 'q' => ["format", "co vim"], + 'v' => ["previous highl$sign{_}ight", "co"], + 'w' => ["format remain cursor", "co vim7"], +}, # mode v g + +#c => { +# desc => "command-line mode", +# +# '^_' => 'i^_', +# '^^' => 'i^^', +## '^\\'=> ["cmd", "me arg"], +# '^a' => ["complete", ""], #todo +# '^b' => ["bol", "po"], +# '^c' => 'i^c', +# '^d' => ["complete", ""], #todo +# '^e' => ["eol", "po"], +# '^h' => 'i^h', +# '^j' => ["execute cmd", "co"], +# '^k' => 'i^k', +# '^l' => ["complete", ""], #todo +# '^n' => ["complete", ""], #todo +# '^p' => ["complete", ""], #todo +# '^r' => 'i^r', # and then some... +# ## ["insert register", "co arg vim"], +# '^q' => '^q', +# '^u' => 'i^u', +# '^v' => 'i^v', +# '^w' => 'i^w', +# '^y' => ["selec$sign{_}tion to clip$sign{_}b$sign{_}oard", "co"], +#}, # mode c + +i => { + desc => "insert mode", + + '^@' => ["last insert", "co"], + '^^' => ["toggle :lmap usag$sign{_}e", "co vim"], + '^[' => ["esc", "mo mode"], + '^]' => ["abbrev$sign{_}iate", "co vim"], + '^_' => ["change lang$sign{_}uage", "co vim"], + '^\\'=> ["switch mode", "mo arg"], + + '^a' => ["insert prev$sign{_}ious", "co vim"], + '^b' => ["former i^_", "co"], + '^c' => ["abort, no abbr", "mo mode"], + '^d' => ["un$sign{_}indent", "co"], + '^e' => ["ins char below", "co vim"], + '^f' => ["cinkeys: re-indent", "co"], + '^g' => ["start column", "pm arg"], #todo + '^h' => ["back$sign{_}space", "co"], + '^i' => ["tab", "co"], + '^j' => ["enter", "co"], + '^k' => ["di$sign{_}graph", "co arg arg vim", "Key code"], + '^l' => ["im leave ins mode", "mo mode vim"], # insertmode only + '^m' => ["enter", "co"], + '^n' => ["find next keyword", "pm vim"], + '^o' => ["execute cmd", "co"], + '^p' => ["find prev keyword", "pm vim"], + '^q' => "^q", # or i^v + '^r' => ["insert register", "co arg vim"], + '^s' => "^s", + '^t' => ["indent", "co"], + '^u' => ["delete line", "co"], + '^v' => ["literal or char$sign{_}cod$sign{_}e", "co", "Verbatim or by Value"], + '^w' => ["delete word back", "co"], + '^x' => ["expand mode", "me arg modei^x vim"], + '^y' => ["ins char above", "co vim"], + '^z' => [":sus$sign{_}pend in im", "ci vim"], # insertmode only +}, # modei + +'i^x' => { + desc => "insert completion commands (i ctrl-x)", + lead => $ascii ? "'x" : "x̂", + + '^[' => ["esc", "mo mode"], + '^]' => ["complet$sign{_}e tags", "co"], + '^d' => ["complet$sign{_}e def$sign{_}ines", "co"], + '^e' => ["window up", "po"], + '^f' => ["complet$sign{_}e file$sign{_}name$sign{_}s", "co"], + '^i' => ["complet$sign{_}e idents", "co"], + '^k' => ["complet$sign{_}e dict", "co"], + '^l' => ["complet$sign{_}e lines", "co"], + '^n' => ["next complet$sign{_}e", "co"], + '^o' => ["omni complet$sign{_}e", "co vim7"], + '^p' => ["previou$sign{_}s compl$sign{_}ete", "co"], + '^s' => ["spell suggest", "co"], + 's' => 'i^x^s', + '^t' => ["complet$sign{_}e thes$sign{_}aur$sign{_}us", "co"], + '^u' => ["complet$sign{_}e$sign{_}func", "co vim7"], + '^v' => ["complet$sign{_}e ex cmd", "co"], + '^y' => ["window down", "po"], +}, # mode i ^x + +# XXX ex mode if you want to go completely wild + diff --git a/vim-keys.inc.pl b/vim-keys.inc.pl new file mode 100644 index 0000000..c3c2907 --- /dev/null +++ b/vim-keys.inc.pl @@ -0,0 +1,94 @@ +use utf8; +my @num = qw(^0 ^0 ^@ ^0 ^0 ^0 ^^ ^0 ^0 ^0 ^0); + +dvorak => [[ + [@num, qw/ ^[ ^] /], + [qw/ ~ ! @ # $ % ^ & * ( ) { } /], + [qw/ ` 1 2 3 4 5 6 7 8 9 0 [ ] /], +], [ + [qw/^0 ^0 ^0 ^p ^y ^f ^g ^c ^r ^l ^? ^0 /], + [qw/ " < > P Y F G C R L ? + /], + [qw( ' , . p y f g c r l / = )], +], [ + [qw/^a ^o ^e ^u ^i ^d ^h ^t ^n ^s ^_ ^\\ /], + [qw/ A O E U I D H T N S _ | /], + [qw/ a o e u i d h t n s - \\ /], +], [ + [qw/^0 ^q ^j ^k ^x ^b ^m ^w ^v ^z /], + [qw/ : Q J K X B M W V Z /], + [qw/ ; q j k x b m w v z /], +]], + +qwerty => [[ + [@num, qw/ ^_ ^0 /], + [qw/ ~ ! @ # $ % ^ & * ( ) _ + /], + [qw/ ` 1 2 3 4 5 6 7 8 9 0 - = /], +], [ + [qw/^q ^w ^e ^r ^t ^y ^u ^i ^o ^p ^[ ^] /], + [qw/ Q W E R T Y U I O P { } /], + [qw/ q w e r t y u i o p [ ] /], +], [ + [qw/^a ^s ^d ^f ^g ^h ^j ^k ^l ^0 ^0 ^\\ /], + [qw/ A S D F G H J K L : " | /], + [qw/ a s d f g h j k l ; ' \\ /], +], [ + [qw(^z ^x ^c ^v ^b ^n ^m ^0 ^0 ^? )], + [qw( Z X C V B N M < > ? )], + [qw( z x c v b n m , . / )], +]], + +qwertz => [[ + [qw/^^ ^0 ^0 ^0 ^0 ^0 ^0 { [ ] } \\ ^0 /], + [qw{ ° ! " § $ % & / ( ) = ? ` }], + [qw/ ^ 1 2 3 4 5 6 7 8 9 0 ß ´ /], +], [ + [qw/ @ ^w ^e ^r ^t ^z ^u ^i ^o ^p ^0 ~ /], + # ^ show altgr-Q instead + [qw/ Q W E R T Z U I O P Ü * /], + [qw/ q w e r t z u i o p ü + /], +], [ + [qw/^a ^s ^d ^f ^g ^h ^j ^k ^l ^0 ^0 ^0 /], + [qw/ A S D F G H J K L Ö Ä ' /], + [qw/ a s d f g h j k l ö ä # /], +], [ + [qw/^y ^x ^c ^v ^b ^n ^m ^0 ^0 ^_ | /], + [qw/ Y X C V B N M ; : _ > /], + [qw/ y x c v b n m , . - < /], +]], + +arensito => [[ + [@num, qw/ ^[ ^] /], + [qw/ ~ ! @ # $ % ^ & * ( ) { } /], + [qw/ ` 1 2 3 4 5 6 7 8 9 0 [ ] /], +], [ + [qw(^q ^l ^0 ^p ^0 ^0 ^f ^u ^d ^k ^? ^0 )], + [qw( Q L " P < > F U D K ? + )], + [qw( q l ' p , . f u d k / = )], +], [ + [qw/^a ^r ^e ^n ^b ^g ^s ^i ^t ^o ^_ ^\\ /], + [qw/ A R E N B G S I T O _ | /], + [qw/ a r e n b g s i t o - \\ /], +], [ + [qw/^z ^w ^0 ^h ^j ^v ^c ^y ^m ^x /], + [qw/ Z W : H J V C Y M X /], + [qw/ z w ; h j v c y m x /], +]], + +abc => [[ + [@num, qw/ ^_ ^0 /], + [qw/ ~ ! @ # $ % ^ & * ( ) _ + /], + [qw/ ` 1 2 3 4 5 6 7 8 9 0 - = /], +], [ + [qw/^a ^b ^c ^d ^e ^f ^g ^h ^i ^j ^[ ^] /], + [qw/ A B C D E F G H I J { } /], + [qw/ a b c d e f g h i j [ ] /], +], [ + [qw/^k ^l ^m ^n ^o ^p ^q ^r ^s ^0 ^0 ^\\ /], + [qw/ K L M N O P Q R S : " | /], + [qw/ k l m n o p q r s ; ' \\ /], +], [ + [qw'^t ^u ^v ^w ^x ^y ^z ^0 ^0 ^? '], + [qw' T U V W X Y Z < > ? '], + [qw' t u v w x y z , . / '], +]], + -- 2.30.0