no warnings 'uninitialized'; # save some useless checks for more legible code
use Carp;
-our $VERSION = '2.10';
+our $VERSION = '3.00';
my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta');
my @rowdesc = qw(numeric top home bottom);
my $self = shift;
my ($key, $ancestry) = @_;
- $key =~ s/(\S*?)(\+?\^?\S)($|\s.*)/$2/;
+ $key =~ s/(\S*?)(\+?\^?\S$)/$2/;
my $mode = $1;
my $keyinfo = $self->{def}->{$mode}->{$key};
return unless defined $keyinfo;
- $keyinfo =~ s/^=// or return $keyinfo;
+ return $keyinfo unless ref $keyinfo eq 'SCALAR';
+ $keyinfo = ${$keyinfo};
return '' if $ancestry->{$key}++; # endless loop failsafe
return $self->keyunalias($keyinfo, $ancestry);
}
sub print_key {
my $self = shift;
- my ($mode, $key, $flags) = @_;
- my ($desc, $mnem);
+ my ($mode, $key, $def) = @_;
- if (not defined $flags) {
- $flags = $key eq '^0' ? 'ni' : 'no';
+ if (not defined $def) {
+ $def = [$key eq '^0' ? 'ni' : 'no'];
}
- elsif ($flags =~ s/^=(\S+)\s?//) { # alias
- my $ref = $1;
- $desc = $self->{sign}->{alias} . ($ref eq "\e" ? 'esc' : $ref);
- $flags = join ' ', $self->keyunalias($ref), 'alias', $flags;
+ elsif (ref $def eq 'SCALAR') {
+ $def = [undef, $def];
}
- if (my $txt = $self->{key}->{$mode.$key}) {
- ($desc, $mnem) = split /\n/, $self->escapedesc($txt);
+ if (ref $def ne 'ARRAY') {
+ carp "print_key: invalid definition for $mode$key: $def";
+ return;
}
+ my ($flags, $txt) = @{$def};
+ if (ref $txt eq 'SCALAR') {
+ my $ref = ${$txt};
+ $def = $self->keyunalias($ref);
+ $ref = 'esc' if $ref eq "\e";
+ $flags //= $def->[0] if ref $def eq 'ARRAY';
+ $txt = $self->{sign}->{alias} . $ref;
+ $flags .= ' alias';
+ }
+ my ($desc, $mnem) = split /\n/, $self->escapedesc($txt);
my $keytxt = $self->print_letter($key, $mode);
$keytxt .= "<small>$self->{sign}->{motion}</small>" if $flags =~ s/ ?\bargm\b//; # motion argument
my $keys = Shiar_Sheet::Keyboard({
def => {
'lead' => {
- 'A' => '=a', # alias
- 'a' => 'classes',
+ 'A' => \'a', # alias
+ 'a' => ['classes', 'description', 'hover comments'],
},
},
- key => {
- 'leada' => ['description', 'comments (on hover)'],
- },
mode => {
'lead' => 'mode description',
},
);
for my $lead (keys %{$modes}) {
if ($lead ne '') {
- $info{def}->{''}->{$lead} = "g1 mode$lead";
+ $info{def}->{''}->{$lead}[0] = "g1 mode$lead";
$g{g1} = 1;
$info{mode}->{$lead} //= "mode $lead";
- $info{def}->{$lead}{$lead} = 'g1 mode'; # back
+ $info{def}->{$lead}{$lead} = ['g1 mode']; # back
}
while (my ($k, $v) = each %{ $modes->{$lead} }) {
my @class;
@class = 'ext';
}
my ($glyph, $title) = $uc->glyph_html($v);
- $info{key}{$lead.$k} = join "\n", $glyph, $title;
my $c = $k =~ s/\A[+^](?=.)//r; # trim modifier indicator
unshift @class, (
: 'g6'
);
$g{$_} = 1 for grep { $_ ne 'no' } @class;
- $info{def}{$lead}{$k} //= join ' ', @class;
+ $info{def}{$lead}{$k} //= [join ' ', @class];
+ $info{def}{$lead}{$k}[1] = join "\n", $glyph, $title;
}
}
$info{flag} = {%{{
say "<h2>", $info->{mode}->{''}, " (default)</h2>"
if $info->{mode} and %{ $info->{mode} } > 1;
-use Shiar_Sheet::Keyboard 2.08;
+use Shiar_Sheet::Keyboard 3.00;
my $keys = Shiar_Sheet::Keyboard->new($info);
$keys->map($get{map}) or undef $get{map};
$keys->print_rows($get{rows} || $info->{moderows}, $info->{rows});
);
my $groups = kbchars(\%rows);
-$groups->{def}{''}{$_} .= ' ext' for keys %dyalogx;
+$groups->{def}{''}{$_}[0] .= ' ext' for keys %dyalogx;
$groups->{flag}{ext} = ['extended', 'optional operators not available in all variants'];
+{
while (my ($k, $c) = each %rows) {
# override letter-based classes by unicode versions
- $groups->{def}{''}{$k} = (
+ $groups->{def}{''}{$k}[0] = (
$c =~ /\p{General_Category=Modifier_Symbol}/ ? 'g9' :
$c =~ /\p{In=1.1}/ ? 'g2' :
$c =~ /\p{In=5.2}/ ? 'g3' :
$keys->{mode} //= {'' => undef};
for my $mode (keys %{ $keys->{mode} }) {
- $row{key}{$_} = $keys->{key}{$_} for $mode || ();
- $row{inventory}{$mode}{$_}++ for grep { /^g[2-9]/ } map { s/ (?!ext).*//r }
+ $row{def}{''}{$_} = $keys->{def}{''}{$_} for $mode || ();
+ $row{inventory}{$mode}{$_}++ for grep { /^g[2-9]/ } map { s/ (?!ext).*//r } map {$_->[0]}
values %{ $keys->{def}{$mode} };
}
}
my @sample = split /(?<!\+)/, $get{sample} // 'asSci1!+1';
require Shiar_Sheet::Keyboard;
+Shiar_Sheet::Keyboard->VERSION(3.00);
use List::Util qw( uniq max sum );
my %caticon = (
print '</a>', "\n\t";
for my $mode ($table->{mode} ? sort keys %{ $table->{mode} } : '') {
print '<span class=graph>';
- printf '<label>%s</label>', s/\s.*//r for $table->{key}{$mode} || ();
+ printf '<label>%s</label>', s/\s.*//r for $table->{def}{''}{$mode}[1] || ();
for my $g (sort keys %{ $table->{inventory}{$mode} }) {
printf '<span class="%s" style="width:%.0f%%" title="%3$d %4$s"> %s</span>',
$g, $_/$most*100, $_,
my $keydata = Data("$dirbase/$inc.eng");
Shiar_Sheet::Keyboard->new($keydata)
}) {
- $keys->print_key('', $_, ($keys->{def}{''}{$_} // 'ni') =~ s/ mode\S*//r)
+ $keys->print_key('', $_, ($keys->{def}{''}{$_} // ['ni']) =~ s/ mode\S*//r)
for @sample;
}
say '</tr>';
my $groups = kbchars(\%rows);
# replace rare punctuation distinctions by symbols
-$groups->{def}{''}{$_} =~ s/g[78]/g6/ for keys %rows;
+$groups->{def}{''}{$_}[0] =~ s/g[78]/g6/ for keys %rows;
-$groups->{def}{''}{$_} = 'g7'
+$groups->{def}{''}{$_}[0] = 'g7'
for grep { $rows{$_} =~ /[\x{2500}-\x{259F}]/ } keys %rows;
$groups->{flag}{g7} = ['drawing', 'box drawing or block elements'];
-$groups->{def}{''}{$_} = 'g8' for keys %compat; # mostly U+1FBxx
+$groups->{def}{''}{$_}[0] = 'g8' for keys %compat; # mostly U+1FBxx
$groups->{flag}{g8} = ['legacy',
'drawing symbols best represented by Unicode 13.0'
. (exists $get{compat} && ', converted to compatible equivalents')
);
my $groups = kbchars({%rows, %uc});
-$groups->{def}{''}{$_} .= ' ext' for keys %uc;
+$groups->{def}{''}{$_}[0] .= ' ext' for keys %uc;
$groups->{flag}{ext} = ['anachrone', 'expected uppercase variants if allowed by charset'];
+{
);
my $groups = kbchars(\%rows);
-$rows{$_} =~ /\A\p{Greek}/ and $groups->{def}{''}{$_} =~ s/g6/g5/ for map {"+$_"} 'a'..'z';
+$rows{$_} =~ /\A\p{Greek}/ and $groups->{def}{''}{$_}[0] =~ s/g6/g5/ for map {"+$_"} 'a'..'z';
$groups->{flag}{g4} = ['similar', 'transliterates or transcribes an expected letter'];
$groups->{flag}{g5} = ['greek', 'different Greek letters or symbols'];
);
my $groups = kbchars(\%rows);
-$groups->{flag}->{g5} = [greek =>
+$groups->{flag}{g5} = [greek =>
"a different greek letter not corresponding with latin transcription"
];
while (my ($key, $chr) = each %rows) {
- $groups->{def}->{''}->{$key} =~ s/g6/g5/ if $chr =~ /\A\p{Greek}/;
+ $groups->{def}{''}{$key}[0] =~ s/g6/g5/ if $chr =~ /\A\p{Greek}/;
}
+{
);
while (my ($k, $c) = each %rows) {
- $groups->{def}{''}{$k} = $cpcompat{$c} // (
+ $groups->{def}{''}{$k}[0] = $cpcompat{$c} // (
$c =~ /\p{In=1.1}/ ? 'g5' :
$c =~ /\p{In=6.0}/ ? 'g6' :
$c =~ /[\x{1FB00}-\x{1FBFF}]/ ? 'g7' : # Age=V13.0
'g0'
);
}
-$groups->{def}{''}{')'} .= ' linkkeyboard/altgr/zoo';
+$groups->{def}{''}{')'}[0] .= ' linkkeyboard/altgr/zoo';
+{
%{ $groups },
);
my $groups = kbchars(\%rows);
-$groups->{def}{''}{$_} .= ' ext' for keys %xkb;
+$groups->{def}{''}{$_}[0] .= ' ext' for keys %xkb;
$groups->{flag}{ext} = ['xkb', 'unofficial extensions added in Linux (Gnome, KDE)'];
+{
while (my ($k, $c) = each %rows) {
$c =~ s/\n.*//;
- $groups->{def}{''}{$k} = (
+ $groups->{def}{''}{$k}[0] = (
$c =~ /\p{In=1.1}/ ? 'g2' :
$c =~ /\p{In=6.0}/ ? 'g3' :
$c =~ /\p{In=8.0}/ ? 'g4' :
keywords => [qw' less keys pager more options '],
rows => [1, 0],
-key => {
- "\e"=> "alt<>/meta",
-
- 'b' => "page up",
- 'd' => 'scroll down',
- 'f' => "page down",
- 'F' => "follow\nForward Forever",
- 'g' => "(first) line",
- 'G' => "last line",
- 'h' => "help",
- 'j' => "<down>",
- 'k' => "<up>",
- 'm' => "mark pos<>ition",
- 'n' => "next find",
- 'N' => "prev find",
- 'p' => "reset position\nbeginning or Percentage",
- 'q' => "quit",
- 'r' => "redraw",
- 'R' => "refresh",
- 's' => "save to file",
- 't' => "next tag",
- 'T' => "prev tag",
- 'u' => 'scroll up',
- 'v' => "edit",
- 'V' => "version",
- 'w' => "page up and set window",
- '^x'=> "emacs aliases",
- 'z' => "set page down",
-
- '!' => "shell command",
- '|' => "pipe till mark",
- ':' => "com<>mand",
- '/' => "find",
- '?' => "find rev.",
- '&' => "filter match<>es",
- "'" => "goto mark",
- '-' => "toggle option",
- '_' => "show option",
- '=' => "file name",
- '+' => "initial cmd",
-
- '(' => "closing",
-
- "^[\e"=> "noop",
- '^[n' => "any next find",
- '^[N' => "any prev find",
- '^[u' => "mark search\nUndo",
- '^[(' => "scroll left",
- '^[)' => "scroll right",
-
- ":\e"=> "noop",
- ':d' => "drop file",
- ':e' => "open file",
- ':n' => "next file",
- ':p' => "prev file",
- ':x' => "first file",
-
- "-\e"=> "noop",
- '-a' => "advance find page",
- '-b' => "buffer space",
- '-B' => "static buffer for pipes",
- '-c' => "clear on scroll",
- '-d' => "dumb term<>inal",
- '-D' => "dos colours",
- '-e' => "exit after eof",
- '-E' => "exit at eof",
- '-f' => "force open",
- '-F' => "exit if 1 page",
- '-g' => "hilight last match",
- '-h' => "scroll back limit",
- '-i' => "ignore lower<>c<>ase",
- '-I' => "ignore case",
- '-j' => "top offset",
- '-J' => "status column",
- '-k' => "key bind<>ing<>s",
- '-L' => qq[ignore <span style="font-variant:small-caps">lesso<>pen</span> filter],
- '-m' => "med. promp<>t tog<>gle",
- '-M' => "long promp<>t tog<>gle",
- '-n' => "count line num<>ber<>s",
- '-N' => "show line n<>um<>ber<>s",
- '-o' => "stdin to log",
- '-O' => "log over<>wr<>ite",
- '-p' => "initial search",
- '-P' => "status line\nPrompt",
- '-q' => "no info bell\nQuiet",
- '-Q' => "no warn bell\nQuiet!",
- '-r' => "raw chars",
- '-R' => "ansi chars",
- '-s' => "squeeze blank lines",
- '-S' => "no line wrap",
- '-t' => "find tag",
- '-T' => "tags file",
- '-u' => 'parse \b \r',
- '-U' => 'escape \t \b \r',
- '-w' => "hilight page d<>own",
- '-W' => "hilight forw<>ard",
- '-x' => "tab stops",
- '-X' => "no termcap init",
- '-y' => "scroll limit fw<>d",
- '-z' => "page size",
- '-"' => "shell quotes",
- '-~' => "outside tildes toggle",
- '-#' => "col shift",
- '--' => "option name",
- '-+' => "reset option",
-},
-
mode => {
'' => 'normal pager',
'^[' => 'escape keys (hold meta/alt)',
def => {
'' => {
- "\e"=> 'g7 mode^[',
-
- 'b' => 'g2 more',
- '^b'=> '=b',
- 'd' => 'g2 more',
- '^d'=> '=d',
- 'e' => '=j',
- '^e'=> '=j',
- 'f' => 'g2 more',
- '^f'=> '=f',
- 'F' => 'g7',
- 'g' => 'g2',
- '^g'=> '==',
- 'G' => 'g2',
- 'h' => 'g7 more',
- 'H' => '=h',
- 'j' => 'g2',
- 'k' => 'g2',
- '^k'=> '=k',
- '^l'=> '=r', # more
- 'm' => 'g3 arg',
- '^m'=> '=j',
- 'n' => 'g4 more',
- 'N' => 'g4',
- '^n'=> '=j',
- 'p' => 'g2',
- '^p'=> '=k',
- 'q' => 'g8 more',
- 'Q' => '=q',
- 'r' => 'g1',
- '^r'=> '=r',
- 'R' => 'g1',
- 's' => 'g8 arg',
- 't' => 'g4',
- 'T' => 'g4',
- 'u' => 'g2',
- '^u'=> '=u',
- 'v' => 'g8 linkvi more',
- '^v'=> '=f',
- 'V' => 'g1',
- 'w' => 'g2',
- '^x'=> 'g8 arg mode^x',
- 'y' => '=k',
- '^y'=> '=k',
- 'z' => 'g2 more',
-
- '!' => 'g8 more',
- '|' => 'g8 arg',
- ':' => 'g8 arg mode:',
- '/' => 'g4 arg more',
- '?' => 'g4 arg',
- '%' => '=p',
- '&' => 'g4 arg',
- "'" => 'g3 arg',
- '-' => 'g8 arg mode-',
- '_' => 'g1 arg mode-',
- '=' => 'g1 more',
- '+' => 'g7',
-
- '(' => 'g4',
- '<' => '=g',
- '>' => '=G',
+ "\e"=> ['g7 mode^[', "alt<>/meta"],
+
+ 'b' => ['g2 more', "page up"],
+ '^b'=> \'b',
+ 'd' => ['g2 more', 'scroll down'],
+ '^d'=> \'d',
+ 'e' => \'j',
+ '^e'=> \'j',
+ 'f' => ['g2 more', "page down"],
+ '^f'=> \'f',
+ 'F' => ['g7', "follow\nForward Forever"],
+ 'g' => ['g2', "(first) line"],
+ '^g'=> \'=',
+ 'G' => ['g2', "last line"],
+ 'h' => ['g7 more', "help"],
+ 'H' => \'h',
+ 'j' => ['g2', "<down>"],
+ 'k' => ['g2', "<up>"],
+ '^k'=> \'k',
+ '^l'=> \'r', # more
+ 'm' => ['g3 arg', "mark pos<>ition"],
+ '^m'=> \'j',
+ 'n' => ['g4 more', "next find"],
+ 'N' => ['g4', "prev find"],
+ '^n'=> \'j',
+ 'p' => ['g2', "reset position\nbeginning or Percentage"],
+ '^p'=> \'k',
+ 'q' => ['g8 more', "quit"],
+ 'Q' => \'q',
+ 'r' => ['g1', "redraw"],
+ '^r'=> \'r',
+ 'R' => ['g1', "refresh"],
+ 's' => ['g8 arg', "save to file"],
+ 't' => ['g4', "next tag"],
+ 'T' => ['g4', "prev tag"],
+ 'u' => ['g2', 'scroll up'],
+ '^u'=> \'u',
+ 'v' => ['g8 linkvi more', "edit"],
+ '^v'=> \'f',
+ 'V' => ['g1', "version"],
+ 'w' => ['g2', "page up and set window"],
+ '^x'=> ['g8 arg mode^x', "emacs aliases"],
+ 'y' => \'k',
+ '^y'=> \'k',
+ 'z' => ['g2 more', "set page down"],
+
+ '!' => ['g8 more', "shell command"],
+ '|' => ['g8 arg', "pipe till mark"],
+ ':' => ['g8 arg mode:', "com<>mand"],
+ '/' => ['g4 arg more', "find"],
+ '?' => ['g4 arg', "find rev."],
+ '%' => \'p',
+ '&' => ['g4 arg', "filter match<>es"],
+ "'" => ['g3 arg', "goto mark"],
+ '-' => ['g8 arg mode-', "toggle option"],
+ '_' => ['g1 arg mode-', "show option"],
+ '=' => ['g1 more', "file name"],
+ '+' => ['g7', "initial cmd"],
+
+ '(' => ['g4', "closing"],
+ '<' => \'g',
+ '>' => \'G',
},
'^[' => { # esc
- "\e"=> 'g7 mode',
- 'n' => 'g4',
- 'N' => 'g4',
- 'u' => 'g1',
- 'v' => '=b',
- '(' => 'g2',
- ')' => 'g2',
- '<' => '=g',
- '>' => '=G',
+ "\e"=> ['g7 mode', "noop"],
+ 'n' => ['g4', "any next find"],
+ 'N' => ['g4', "any prev find"],
+ 'u' => ['g1', "mark search\nUndo"],
+ 'v' => \'b',
+ '(' => ['g2', "scroll left"],
+ ')' => ['g2', "scroll right"],
+ '<' => \'g',
+ '>' => \'G',
},
#'^x' => {
# "\e"=> 'g7 mode',
- # '^x' => "='",
- # '^v' => '=:e',
+ # '^x' => \"'",
+ # '^v' => \':e',
#},
':' => {
- "\e"=> 'g7 mode',
- 'd' => 'g7',
- 'e' => 'g7',
- 'f' => '==',
- 'n' => 'g7 more',
- 'p' => 'g7 more',
- 'q' => '=q',
- 'Q' => '=:q',
- 'x' => 'g7',
+ "\e"=> ['g7 mode', "noop"],
+ 'd' => ['g7', "drop file"],
+ 'e' => ['g7', "open file"],
+ 'f' => \'=',
+ 'n' => ['g7 more', "next file"],
+ 'p' => ['g7 more', "prev file"],
+ 'q' => \'q',
+ 'Q' => \':q',
+ 'x' => ['g7', "first file"],
},
'-' => {
- "\e"=> 'g7 mode',
- 'a' => 'g4',
- 'b' => 'g7 arg',
- 'B' => 'g7',
- 'c' => 'g2',
- 'd' => 'g8',
- 'D' => 'g8 arg ext',
- 'e' => 'g7',
- 'E' => 'g7',
- 'f' => 'g7',
- 'F' => 'g7',
- 'g' => 'g4',
- 'h' => 'g2 arg',
- 'i' => 'g4',
- 'I' => 'g4',
- 'j' => 'g3 arg',
- 'J' => 'g1',
- 'k' => 'g8 arg',
- 'L' => 'g8',
- 'm' => 'g1',
- 'M' => 'g1',
- 'n' => 'g8',
- 'N' => 'g1',
- 'o' => 'g8 arg',
- 'O' => 'g8 arg',
- 'p' => 'g4 arg',
- 'P' => 'g1 arg',
- 'q' => 'g8',
- 'Q' => 'g8',
- 'r' => 'g8',
- 'R' => 'g8',
- 's' => 'g8',
- 'S' => 'g8',
- 't' => 'g4 arg',
- 'T' => 'g4 arg',
- 'u' => 'g8',
- 'U' => 'g8',
- 'V' => '=V',
- 'w' => 'g8',
- 'W' => 'g8',
- 'x' => 'g8 arg',
- 'X' => 'g8',
- 'y' => 'g2 arg',
- 'z' => 'g2 arg',
- '"' => 'g8 arg',
- '~' => 'g8',
- '#' => 'g2 arg',
- '-' => 'g8 arg',
- '+' => 'g8 arg',
+ "\e"=> ['g7 mode', "noop"],
+ 'a' => ['g4', "advance find page"],
+ 'b' => ['g7 arg', "buffer space"],
+ 'B' => ['g7', "static buffer for pipes"],
+ 'c' => ['g2', "clear on scroll"],
+ 'd' => ['g8', "dumb term<>inal"],
+ 'D' => ['g8 arg ext', "dos colours"],
+ 'e' => ['g7', "exit after eof"],
+ 'E' => ['g7', "exit at eof"],
+ 'f' => ['g7', "force open"],
+ 'F' => ['g7', "exit if 1 page"],
+ 'g' => ['g4', "hilight last match"],
+ 'h' => ['g2 arg', "scroll back limit"],
+ 'i' => ['g4', "ignore lower<>c<>ase"],
+ 'I' => ['g4', "ignore case"],
+ 'j' => ['g3 arg', "top offset"],
+ 'J' => ['g1', "status column"],
+ 'k' => ['g8 arg', "key bind<>ing<>s"],
+ 'L' => ['g8', qq[ignore <span style="font-variant:small-caps">lesso<>pen</span> filter]],
+ 'm' => ['g1', "med. promp<>t tog<>gle"],
+ 'M' => ['g1', "long promp<>t tog<>gle"],
+ 'n' => ['g8', "count line num<>ber<>s"],
+ 'N' => ['g1', "show line n<>um<>ber<>s"],
+ 'o' => ['g8 arg', "stdin to log"],
+ 'O' => ['g8 arg', "log over<>wr<>ite"],
+ 'p' => ['g4 arg', "initial search"],
+ 'P' => ['g1 arg', "status line\nPrompt"],
+ 'q' => ['g8', "no info bell\nQuiet"],
+ 'Q' => ['g8', "no warn bell\nQuiet!"],
+ 'r' => ['g8', "raw chars"],
+ 'R' => ['g8', "ansi chars"],
+ 's' => ['g8', "squeeze blank lines"],
+ 'S' => ['g8', "no line wrap"],
+ 't' => ['g4 arg', "find tag"],
+ 'T' => ['g4 arg', "tags file"],
+ 'u' => ['g8', 'parse \b \r'],
+ 'U' => ['g8', 'escape \t \b \r'],
+ 'V' => \'V',
+ 'w' => ['g8', "hilight page d<>own"],
+ 'W' => ['g8', "hilight forw<>ard"],
+ 'x' => ['g8 arg', "tab stops"],
+ 'X' => ['g8', "no termcap init"],
+ 'y' => ['g2 arg', "scroll limit fw<>d"],
+ 'z' => ['g2 arg', "page size"],
+ '"' => ['g8 arg', "shell quotes"],
+ '~' => ['g8', "outside tildes toggle"],
+ '#' => ['g2 arg', "col shift"],
+ '-' => ['g8 arg', "option name"],
+ '+' => ['g8 arg', "reset option"],
},
},
}
keywords => [qw'mpv mplayer mplayer2 media player video audio'],
rows => [1, 0],
-key => {
- '[' => "slow down 10%",
- ']' => "speed up 10%",
- '{' => "half speed",
- '}' => "double speed",
- '<' => "previous file",
- '>' => "next file",
- 'p' => "pause",
- '.' => "step forward",
- 'q' => "stop and quit",
- '+' => "audio delay +<>.1s", # +ctrl in mpv
- '-' => "audio delay -<>.1s", # +ctrl in mpv
- '/' => "volume decrease",
- '*' => "volume increase",
- 'm' => "mute sound",
- '#' => "cycle audio tr<>ack<>s",
- 'f' => "full<>screen",
- 'T' => "stay on top",
- 'w' => "pan/sc. decr<>eas<>e",
- 'e' => "pan/scan increase",
- 'o' => "osd state switch",
- 'd' => "frame drop mode",
- 'v' => "subtitle visibility",
- 'b' => "next sub<>title",
- 'j' => "prev<>ious sub<>title",
- 'g' => "back in sub<>title<>s list",
- 'y' => "forward in sub<>title<>s list",
- 'F' => "forced subtitles",
- 'a' => "align subtitles",
- 'c' => "cycle fs mode",
- 'n' => "restore video mode",
- 'x' => "subtitle delay +<>.1<>s",
- 'z' => "subtitle delay -<>.1<>s",
- 'r' => "subtitles up",
- 't' => "subtitles down",
- 's' => "screen<>shot\n-vf screenshot",
- 'S' => "record screen<>shot<>s\n-vf screenshot",
- 'I' => "filename",
- '!' => "chapter back", # also pgdn in mpv
- '@' => "chapter forward", # also pgup in mpv
- '1' => "contrast less",
- '2' => "contrast more",
- '3' => "brighter",
- '4' => "darker",
- '5' => "hue to red",
- '6' => "hue to blue",
- '7' => "saturate",
- '8' => "de<>saturate",
-},
-
mode => {
'' => "interactive control",
},
def => {
'' => {
- "\e"=> 'q',
- '[' => 'g7',
- ']' => 'g7',
- '{' => 'g7',
- '}' => 'g7',
- '<' => 'g9',
- '>' => 'g9',
- 'p' => 'g7',
- '.' => 'g7',
- 'q' => 'g9',
- '+' => 'g6',
- '-' => 'g6',
- '/' => 'g6',
- '*' => 'g6',
- '9' => '=/',
- '0' => '=*',
- 'm' => 'g6',
- '#' => 'g6',
- 'f' => 'g4',
- 'T' => 'g4',
- 'w' => 'g4',
- 'e' => 'g4',
- 'o' => 'g1',
- 'd' => 'g4',
- 'v' => 'g2',
- 'b' => 'g2',
- 'j' => 'g2',
- 'y' => 'g2',
- 'g' => 'g2',
- 'F' => 'g2',
- 'a' => 'g2',
- 'c' => 'g4 ext',
- 'n' => 'g4 ext',
- 'x' => 'g2',
- 'z' => 'g2',
- 'r' => 'g2',
- 't' => 'g2',
- 's' => 'g9 ext',
- 'S' => 'g9 ext',
- 'I' => 'g1',
- '!' => 'g7',
- '@' => 'g7',
- '1' => 'g4 ext',
- '2' => 'g4 ext',
- '3' => 'g4 ext',
- '4' => 'g4 ext',
- '5' => 'g4 ext',
- '6' => 'g4 ext',
- '7' => 'g4 ext',
- '8' => 'g4 ext',
+ "\e"=> \'q',
+ '[' => ['g7', "slow down 10%"],
+ ']' => ['g7', "speed up 10%"],
+ '{' => ['g7', "half speed"],
+ '}' => ['g7', "double speed"],
+ '<' => ['g9', "previous file"],
+ '>' => ['g9', "next file"],
+ 'p' => ['g7', "pause"],
+ '.' => ['g7', "step forward"],
+ 'q' => ['g9', "stop and quit"],
+ '+' => ['g6', "audio delay +<>.1s"],
+ '-' => ['g6', "audio delay -<>.1s"],
+ '/' => ['g6', "volume decrease"],
+ '*' => ['g6', "volume increase"],
+ '9' => \'/',
+ '0' => \'*',
+ 'm' => ['g6', "mute sound"],
+ '#' => ['g6', "cycle audio tr<>ack<>s"],
+ 'f' => ['g4', "full<>screen"],
+ 'T' => ['g4', "stay on top"],
+ 'w' => ['g4', "pan/sc. decr<>eas<>e"],
+ 'e' => ['g4', "pan/scan increase"],
+ 'o' => ['g1', "osd state switch"],
+ 'd' => ['g4', "frame drop mode"],
+ 'v' => ['g2', "subtitle visibility"],
+ 'b' => ['g2', "next sub<>title"],
+ 'j' => ['g2', "prev<>ious sub<>title"],
+ 'y' => ['g2', "forward in sub<>title<>s list"],
+ 'g' => ['g2', "back in sub<>title<>s list"],
+ 'F' => ['g2', "forced subtitles"],
+ 'a' => ['g2', "align subtitles"],
+ 'c' => ['g4 ext', "cycle fs mode"],
+ 'n' => ['g4 ext', "restore video mode"],
+ 'x' => ['g2', "subtitle delay +<>.1<>s"],
+ 'z' => ['g2', "subtitle delay -<>.1<>s"],
+ 'r' => ['g2', "subtitles up"],
+ 't' => ['g2', "subtitles down"],
+ 's' => ['g9 ext', "screen<>shot\n-vf screenshot"],
+ 'S' => ['g9 ext', "record screen<>shot<>s\n-vf screenshot"],
+ 'I' => ['g1', "filename"],
+ '!' => ['g7', "chapter back"], # also pgdn in mpv
+ '@' => ['g7', "chapter forward"], # also pgup in mpv
+ '1' => ['g4 ext', "contrast less"],
+ '2' => ['g4 ext', "contrast more"],
+ '3' => ['g4 ext', "brighter"],
+ '4' => ['g4 ext', "darker"],
+ '5' => ['g4 ext', "hue to red"],
+ '6' => ['g4 ext', "hue to blue"],
+ '7' => ['g4 ext', "saturate"],
+ '8' => ['g4 ext', "de<>saturate"],
},
},
}
keywords => $legacy->{keywords},
rows => [1, 0],
-key => { %{ $legacy->{key} },
- ',' => "step backward<>s",
- 'Q' => "save and quit",
- '_' => "cycle video tr<>ack<>s",
- '+' => "audio delay +<>.1s", # +ctrl in mpv
- '-' => "audio delay -<>.1s", # +ctrl in mpv
- 'o' => "osd state switch",
- 'O' => "osd mode toggle",
- 'd' => "deint<>erlace",
- 'E' => "edition cycle",
- 'i' => "stats info",
- 'I' => "toggle stats info",
- 'j' => "next sub<>title",
- 'J' => "prev<>ious sub<>title",
- 'A' => "aspect override",
- 'u' => "subtitle style",
- 'V' => "subtitle aspect",
- 'l' => "A-B loop",
- 'L' => "infinite looping",
- 'S' => "record screen<>shot<>s\n-vf screenshot", # mpv?
- '^s'=> "actual screen<>shot",
- '5' => "gamma decrease",
- '6' => "gamma increase",
- 'F' => 'enlarge sub font',
- 'G' => 'smaller sub font',
- '`' => 'console',
-},
-
mode => $legacy->{mode},
flag => { %{ $legacy->{flag} },
def => {
'' => { %{ $legacy->{def}->{''} },
- '`' => 'g9 arg new',
- 'b' => undef,
- 'g' => undef,
+ 'd' => ['g4 new', "deint<>erlace"],
+ '5' => ['g4 ext', "gamma decrease"],
+ '6' => ['g4 ext', "gamma increase"],
+
'y' => undef,
- 'F' => 'g2 new',
- 'G' => 'g2 new',
+ 'g' => undef,
+ 'b' => undef,
+ 'j' => ['g2 new', "next sub<>title"], # was b
+ 'J' => ['g2 new', "prev<>ious sub<>title"], # was j
+
+ '`' => ['g9 arg new', 'console'],
+ 'F' => ['g2 new', 'enlarge sub font'],
+ 'G' => ['g2 new', 'smaller sub font'],
'a' => undef,
'c' => undef,
'n' => undef,
- 'i' => 'g1 new',
- 'I' => 'g1 new',
- ',' => 'g7 new',
- '_' => 'g4 new',
- 'Q' => 'g9 new',
- 'O' => 'g1 new',
- 'P' => '=o new',
- 'J' => 'g2 new',
- 'A' => 'g4 new',
- 'u' => 'g2 new',
- 'V' => 'g2 new',
- 'l' => 'g7 new',
- 'L' => 'g7 new',
- 'E' => 'g4 new',
- '^s'=> 'g9 ext new',
- 'R' => '=t new',
- 'Z' => '=x new',
- 'W' => '=e new',
+ 'i' => ['g1 new', "stats info"],
+ 'I' => ['g1 new', "toggle stats info"],
+ ',' => ['g7 new', "step backward<>s"],
+ '_' => ['g4 new', "cycle video tr<>ack<>s"],
+ 'Q' => ['g9 new', "save and quit"],
+ 'O' => ['g1 new', "osd mode toggle"],
+ 'P' => [new => \'o'],
+ 'A' => ['g4 new', "aspect override"],
+ 'u' => ['g2 new', "subtitle style"],
+ 'V' => ['g2 new', "subtitle aspect"],
+ 'l' => ['g7 new', "A-B loop"],
+ 'L' => ['g7 new', "infinite looping"],
+ 'E' => ['g4 new', "edition cycle"],
+ '^s'=> ['g9 ext new', "actual screen<>shot"],
+ 'R' => [new => \'t'],
+ 'Z' => [new => \'x'],
+ 'W' => [new => \'e'],
},
},
}
use utf8;
-my %commonkey = (
- 'H' => "screen top",
- 'j' => "entry <down>",
- 'k' => "entry <up>",
- 'L' => "screen bottom",
- '^l'=> "redraw",
- 'M' => "screen middle",
- '^m'=> "select",
- 'n' => "search <down>",
- 'q' => "exit",
- 't' => "tag",
- 'z' => "page <down>",
- 'Z' => "page <up>",
-
- '*' => "last entry",
- '=' => "first entry",
- ':' => "enter command",
- ';' => "apply to tagged",
- '>' => "line <down>",
- '<' => "line <up>",
- ']' => "half page <down>",
- '[' => "half page <up>",
- '?' => "help",
- '!' => "invoke shell",
- '/' => "search <down>",
- '+/'=> "search <up>",
-);
+my $esc = ['g9 mode', '+']; # globally label escape as meta key
my %commondef = (
- "\e"=> 'g9 mode',
+ "\e"=> $esc,
- 'H' => 'g2', # top-page
- 'j' => 'g2', # next-entry, next-undeleted
- 'k' => 'g2', # previous-entry, previous-undeleted
- 'L' => 'g2', # bottom-page
- '^l'=> 'g1', # refresh
- 'M' => 'g2', # middle-page
- '^m'=> 'g6 mode^m', # select-entry, display-message
- 'n' => 'g3', # search-next
- 'q' => 'g8 mode', # exit
- 't' => 'g4', # tag-entry
- 'z' => 'g2', # next-page
- 'Z' => 'g2', # previous-page
+ 'H' => ['g2', "screen top"], # top-page
+ 'j' => ['g2', "entry <down>"], # next-entry, next-undeleted
+ 'k' => ['g2', "entry <up>"], # previous-entry, previous-undeleted
+ 'L' => ['g2', "screen bottom"], # bottom-page
+ '^l'=> ['g1', "redraw"], # refresh
+ 'M' => ['g2', "screen middle"], # middle-page
+ '^m'=> ['g6 mode^m', "select"], # select-entry, display-message
+ 'n' => ['g3', "search <down>"], # search-next
+ 'q' => ['g8 mode', "exit"], # exit
+ 't' => ['g4', "tag"], # tag-entry
+ 'z' => ['g2', "page <down>"], # next-page
+ 'Z' => ['g2', "page <up>"], # previous-page
- '*' => 'g2', # last-entry
- '=' => 'g2', # first-entry
- ':' => 'g6', # enter-command
- ';' => 'g6 arg', # tag-prefix
- '>' => 'g2', # next-line
- '<' => 'g2', # previous-line
- ']' => 'g2', # half-down
- '[' => 'g2', # half-up
- '?' => 'g1', # help
- '!' => 'g1 arg', # shell
- '/' => 'g3 arg mode/~', # search
- '+/'=> 'g3 arg mode/~', # search
+ '*' => ['g2', "last entry"], # last-entry
+ '=' => ['g2', "first entry"], # first-entry
+ ':' => ['g6', "enter command"], # enter-command
+ ';' => ['g6 arg', "apply to tagged"], # tag-prefix
+ '>' => ['g2', "line <down>"], # next-line
+ '<' => ['g2', "line <up>"], # previous-line
+ ']' => ['g2', "half page <down>"], # half-down
+ '[' => ['g2', "half page <up>"], # half-up
+ '?' => ['g1', "help"], # help
+ '!' => ['g1 arg', "invoke shell"], # shell
+ '/' => ['g3 arg mode/~', "search <down>"], # search
+ '+/'=> ['g3 arg mode/~', "search <up>"], # search
);
{
],
keywords => [qw' mutt MUA email client '],
-key => {
- %commonkey,
-
- '@' => "display sender",
- '.' => "list new mail",
- '|' => "pipe to shell",
- '$' => "save mailbox",
- '#' => "split up thread",
- '&' => "thread tagged",
- '%' => "toggle reado<>nl<>y",
- '-' => "collapse thread",
- '_' => "collapse all",
- "'" => "marked mes<>sag<>e",
- '~' => "save mark",
-
- 'a' => "create alias",
- 'b' => "bounce",
- '^b'=> "url<>view",
- '+b'=> "search bodies",
- 'c' => "open folder",
- 'C' => "copy messag<>e",
- '+c'=> "open reado<>nly",
- '+C'=> "make plain copy",
- 'd' => "delete",
- 'D' => "delete patt<>er<>n",
- '^d'=> "delete thread",
- '+d'=> "delete subthread",
- 'e' => "edit",
- '^e'=> "edit con<>tent type",
- '+e'=> "edit+send copy",
- 'f' => "forward",
- 'F' => "toggle important",
- '^f'=> "forget pass<>phras<>e",
- 'g' => "reply to all\nGroup reply",
- 'G' => "fetch POP\nGather new mail",
- 'h' => "toggle headers",
- 'i' => "fetch IMAP",
- '^i'=> "unread msg <down>",
- '+^i'=> "unread msg <up>",
- 'j' => "messag<>e <down>",
- 'k' => "messag<>e <up>",
- 'J' => "any <down>",
- 'K' => "any <up>",
- '^k'=> "extract pub keys",
- '+k'=> "send public key",
- 'l' => "limit pattern",
- 'L' => "reply to list",
- '+l'=> "mlist actions",
- #'+l'=> "show current limit",
- 'm' => "compo<>s<>e mail",
- 'N' => "toggle new",
- '^n'=> "thread <down>",
- '+n'=> "subthr<>ead <down>",
- 'o' => "sort",
- 'O' => "sort reverse",
- 'p' => "print",
- 'P' => "to parent",
- '^p'=> "thread <up>",
- '+p'=> "subthr<>ead <up>",
- '+P'=> "check for pgp",
- 'q' => "quit",
- 'Q' => "query addr<>ess<>es",
- 'r' => "reply to sender",
- 'R' => "recall postpon<>e<>d",
- '^r'=> "mark thread read",
- '+r'=> "mark sub<>thread r<>ead",
- 's' => "move",
- '+s'=> "save and delete",
- 'T' => "tag patt<>er<>n",
- '^t'=> "untag pattern",
- '+t'=> "tag thread",
- 'u' => "undo delete",
- 'U' => "res<>tore pat<>t<>er<>n",
- '^u'=> "restore thread",
- '+u'=> "restore subthread",
- 'v' => "attach<>ments",
- 'V' => "version",
- '+v'=> "(un)collapse thread",
- '+V'=> "(un)collapse threads",
- 'w' => "set flag",
- 'W' => "clear flag",
- 'x' => "abort",
- 'y' => "list incoming mailboxes",
- 'Y' => "edit label",
-
- (map { 'm'.$_ => $commonkey{$_} } keys %commonkey),
-
- 'm|' => "pipe attach<>m<>ent",
- 'ma' => "attach file",
- 'mA' => "attach messag<>e",
- 'm^b'=> "url<>view",
- 'mb' => "edit bcc",
- 'mc' => "edit cc",
- 'mC' => "copy file",
- 'md' => "desc<>ribe attach<>m<>ent",
- 'mD' => "delete attach<>m<>ent",
- 'm^d'=> "dispo<>sition tog<>gle",
- 'me' => "edit body",
- 'mE' => "edit all",
- 'm^e'=> "edit encoding",
- 'mf' => "edit fcc",
- 'm^f'=> "forget pass<>phrase",
- 'm+f'=> "edit from",
- 'mF' => "filter attach<>m<>ent",
- 'mG' => "get attach<>m<>ent",
- 'mh' => "display message",
- 'mi' => "run ispell",
- 'm+k'=> "attach PGP key",
- 'ml' => "print attach<>m<>ent",
- 'mm' => "edit attach<>m<>ent\nMime-appropriate open",
- 'mM' => "edit mix",
- 'm^m'=> "view attach<>m<>ent",
- 'mn' => "new attach<>m<>ent",
- 'mo' => "autocrypt toggle", #TODO
- 'm^o'=> "rename attach<>m<>ent",
- 'mp' => "PGP menu",
- 'mP' => "post<>pone",
- 'mr' => "edit reply<>-to",
- 'mR' => "rename attach<>m<>ent",
- 'ms' => "edit subject",
- 'mS' => "s/mime options",
- 'mt' => "edit to",
- 'mT' => "enter tags", #TODO
- 'm^t'=> "ctype attach<>m<>ent",
- 'mu' => "unlink toggle",
- 'mv' => "preview alt fil<>t<>er", # m+v mV
- 'mV' => "preview mailcap filter",
- 'mw' => "copy to folder",
- 'mU' => "encode attach<>m<>ent",
- 'my' => "send",
- # ^xe
-
- 'wD' => "deleted",
- 'wN' => "new",
- 'wO' => "old",
- 'wr' => "replied",
- 'w*' => "tagged",
- 'w!' => "flagged",
-
- '/~A' => "all",
- '/~b' => "msg body",
- '/~B' => "whole msg",
- '/~c' => "cc address",
- '/~C' => "to or cc address",
- '/~d' => "date sent ran<>g<>e",
- '/~D' => "deleted",
- '/~e' => "sender",
- '/~E' => "expired",
- '/~f' => "from",
- '/~F' => "flagged",
- '/~g' => "signed",
- '/~G' => "encryp<>ted",
- '/~h' => "header",
- '/~H' => "spam attr<>ib<>ute",
- '/~i' => "msg id",
- '/~k' => "pgp key",
- '/~L' => "receiv<>d by",
- '/~l' => "mailing list",
- '/~m' => "num<>ber ran<>g<>e",
- '/~M' => "mime type",
- '/~n' => "score range",
- '/~N' => "new",
- '/~O' => "old",
- '/~p' => "to you",
- '/~P' => "by you",
- '/~Q' => "replies",
- '/~r' => "receive date ran<>ge",
- '/~R' => "read",
- '/~s' => "subject",
- '/~S' => "super<>seded",
- '/~t' => "to address",
- '/~T' => "tagged",
- '/~u' => "subscr<>ibed list",
- '/~U' => "unread",
- '/~v' => "collapsed thread",
- '/~V' => "verified",
- '/~x' => "refer<>ence",
- '/~X' => "attach<>ments",
- '/~y' => "x-label",
- '/~z' => "size range",
- '/~=' => "dupli<>cate",
- '/~$' => "unrefer<>enced",
- '/~(' => "in thread",
- '/~<' => "parent match",
- '/~>' => "child match",
-
- # globally label escape as meta key
- "\e"=> "+",
- "m\e"=> "+",
- "w\e"=> "+",
- "/~\e"=> "+",
-},
-
mode => {
'' => 'index',
'm' => 'compose (m)',
'' => {
%commondef,
- '@' => 'g1', # display-address
- '.' => 'g8', # buffy-list #TODO
- '|' => 'g6', # pipe-message
- '$' => 'g4', # sync-mailbox
- '#' => 'g4', # break-thread
- '&' => 'g4', # link-threads
- '%' => 'g4', # toggle-write
- '-' => 'g9',
- '_' => 'g9',
- '~' => 'g4 arg', # mark-message #TODO
- "'" => 'g3 arg',
- ' ' => '=^m',
+ '@' => ['g1', "display sender"], # display-address
+ '.' => ['g8', "list new mail"], # buffy-list #TODO
+ '|' => ['g6', "pipe to shell"], # pipe-message
+ '$' => ['g4', "save mailbox"], # sync-mailbox
+ '#' => ['g4', "split up thread"], # break-thread
+ '&' => ['g4', "thread tagged"], # link-threads
+ '%' => ['g4', "toggle reado<>nl<>y"], # toggle-write
+ '-' => ['g9', "collapse thread"],
+ '_' => ['g9', "collapse all"],
+ '~' => ['g4 arg', "save mark"], # mark-message #TODO
+ "'" => ['g3 arg', "marked mes<>sag<>e"],
+ ' ' => \'^m',
- 'a' => 'g6', # create-alias
- 'b' => 'g7', # bounce-message
- '^b'=> 'g1',
- '+b'=> undef, # M <search>~b
- 'c' => 'g8', # change-folder
- 'C' => 'g6', # copy-message
- '+c'=> 'g8', # change-folder-readonly
- '+C'=> undef, # decode-copy
- 'd' => 'g4', # delete-message
- 'D' => 'g4 arg mode/~', # delete-pattern
- '^d'=> 'g4', # delete-thread
- '+d'=> 'g4', # delete-subthread
- 'e' => 'g4 linkvi', # edit
- '^e'=> 'g4', # edit-type
- '+e'=> undef, # resend-message
- 'f' => 'g7 modem', # forward-message
- 'F' => 'g4', # flag-message
- '^f'=> 'g6', # forget-passphrase
- 'g' => 'g7 modem', # group-reply
- 'G' => 'g6', # fetch-mail
- 'h' => 'g9', # display-toggle-weed
- 'i' => 'g6', # imap-fetch-mail
- '^i'=> 'g3', # next-new-then-unread
- '+^i'=> undef, # previous-new-then-unread
- 'j' => 'g2', # next-undeleted
- 'k' => 'g2', # previous-undeleted
- 'J' => 'g3', # next-entry
- 'K' => 'g3', # previous-entry
- '^k'=> 'g1', # extract-keys
- '+k'=> 'g7 modem', # mail-key
- 'l' => 'g9 arg mode/~', # limit
- 'L' => 'g7 modem', # list-reply
- '+l'=> 'g1', # list-actions/show-limit
- 'm' => 'g7 modem', # mail
- 'N' => 'g4', # toggle-new
- '^n'=> 'g3', # next-thread
- '+n'=> 'g3', # next-subthread
- 'o' => 'g9 modeo', # sort-mailbox
- 'O' => 'g9 modeo', # sort-reverse
- 'p' => 'g1', # print-message
- 'P' => 'g3', # parent-message
- '^p'=> 'g3', # previous-thread
- '+p'=> 'g3', # previous-subthread
- '+P'=> undef, # check-traditional-pgp
- 'q' => 'g8', # quit
- 'Q' => 'g1 arg', # query
- 'r' => 'g7 modem', # reply
- 'R' => 'g7 modem', # recall-message
- '^r'=> 'g4', # read-thread
- '+r'=> 'g4', # read-subthread
- 's' => 'g4', # save-message
- '+s'=> 'g4', # decode-save
- 'T' => 'g4 arg mode/~', # tag-pattern
- '^t'=> 'g4 arg mode/~', # untag-pattern
- '+t'=> 'g4', # tag-thread
- 'u' => 'g4', # undelete-message
- 'U' => 'g4 arg mode/~', # undelete-pattern
- '^u'=> 'g4', # undelete-thread
- '+u'=> 'g4', # undelete-subthread
- 'v' => 'g1', # view-attachments
- 'V' => 'g1', # show-version
- '+v'=> 'g9', # collapse-thread
- '+V'=> 'g9', # collapse-all
- 'w' => 'g4 arg modew', # set-flag
- 'W' => 'g4 arg modew', # clear-flag
- 'x' => 'g8', # exit
- 'y' => 'g8', # M <change-folder>?<toggle-mailboxes>
- 'Y' => 'g4 arg', # edit-label
+ 'a' => ['g6', "create alias"], # create-alias
+ 'b' => ['g7', "bounce"], # bounce-message
+ '^b'=> ['g1', "url<>view"],
+ '+b'=> [undef, "search bodies"], # M <search>~b
+ 'c' => ['g8', "open folder"], # change-folder
+ 'C' => ['g6', "copy messag<>e"], # copy-message
+ '+c'=> ['g8', "open reado<>nly"], # change-folder-readonly
+ '+C'=> [undef, "make plain copy"], # decode-copy
+ 'd' => ['g4', "delete"], # delete-message
+ 'D' => ['g4 arg mode/~', "delete patt<>er<>n"], # delete-pattern
+ '^d'=> ['g4', "delete thread"], # delete-thread
+ '+d'=> ['g4', "delete subthread"], # delete-subthread
+ 'e' => ['g4 linkvi', "edit"], # edit
+ '^e'=> ['g4', "edit con<>tent type"], # edit-type
+ '+e'=> [undef, "edit+send copy"], # resend-message
+ 'f' => ['g7 modem', "forward"], # forward-message
+ 'F' => ['g4', "toggle important"], # flag-message
+ '^f'=> ['g6', "forget pass<>phras<>e"], # forget-passphrase
+ 'g' => ['g7 modem', "reply to all\nGroup reply"], # group-reply
+ 'G' => ['g6', "fetch POP\nGather new mail"], # fetch-mail
+ 'i' => ['g6', "fetch IMAP"], # imap-fetch-mail
+ '^i'=> ['g3', "unread msg <down>"], # next-new-then-unread
+ '+^i'=> [undef, "unread msg <up>"], # previous-new-then-unread
+ 'j' => ['g2', "messag<>e <down>"], # next-undeleted
+ 'k' => ['g2', "messag<>e <up>"], # previous-undeleted
+ 'J' => ['g3', "any <down>"], # next-entry
+ 'K' => ['g3', "any <up>"], # previous-entry
+ '^k'=> ['g1', "extract pub keys"], # extract-keys
+ '+k'=> ['g7 modem', "send public key"], # mail-key
+ 'l' => ['g9 arg mode/~', "limit pattern"], # limit
+ 'L' => ['g7 modem', "reply to list"], # list-reply
+ '+l'=> ['g1', "mlist actions"], # list-actions/show-limit
+ #'+l'=> [, "show current limit"],
+ 'm' => ['g7 modem', "compo<>s<>e mail"], # mail
+ 'N' => ['g4', "toggle new"], # toggle-new
+ '^n'=> ['g3', "thread <down>"], # next-thread
+ '+n'=> ['g3', "subthr<>ead <down>"], # next-subthread
+ 'o' => ['g9 modeo', "sort"], # sort-mailbox
+ 'O' => ['g9 modeo', "sort reverse"], # sort-reverse
+ 'p' => ['g1', "print"], # print-message
+ 'P' => ['g3', "to parent"], # parent-message
+ '^p'=> ['g3', "thread <up>"], # previous-thread
+ '+p'=> ['g3', "subthr<>ead <up>"], # previous-subthread
+ '+P'=> [undef, "check for pgp"], # check-traditional-pgp
+ 'q' => ['g8', "quit"], # quit
+ 'Q' => ['g1 arg', "query addr<>ess<>es"], # query
+ 'r' => ['g7 modem', "reply to sender"], # reply
+ 'R' => ['g7 modem', "recall postpon<>e<>d"], # recall-message
+ '^r'=> ['g4', "mark thread read"], # read-thread
+ '+r'=> ['g4', "mark sub<>thread r<>ead"], # read-subthread
+ 's' => ['g4', "move"], # save-message
+ '+s'=> ['g4', "save and delete"], # decode-save
+ 'T' => ['g4 arg mode/~', "tag patt<>er<>n"], # tag-pattern
+ '^t'=> ['g4 arg mode/~', "untag pattern"], # untag-pattern
+ '+t'=> ['g4', "tag thread"], # tag-thread
+ 'u' => ['g4', "undo delete"], # undelete-message
+ 'U' => ['g4 arg mode/~', "res<>tore pat<>t<>er<>n"], # undelete-pattern
+ '^u'=> ['g4', "restore thread"], # undelete-thread
+ '+u'=> ['g4', "restore subthread"], # undelete-subthread
+ 'v' => ['g1', "attach<>ments"], # view-attachments
+ 'V' => ['g1', "version"], # show-version
+ '+v'=> ['g9', "(un)collapse thread"], # collapse-thread
+ '+V'=> ['g9', "(un)collapse threads"], # collapse-all
+ 'w' => ['g4 arg modew', "set flag"], # set-flag
+ 'W' => ['g4 arg modew', "clear flag"], # clear-flag
+ 'x' => ['g8', "abort"], # exit
+ 'y' => ['g8', "list incoming mailboxes"], # M <change-folder>?<toggle-mailboxes>
+ 'Y' => ['g4 arg', "edit label"], # edit-label
}, # index
'm' => {
%commondef,
- '|' => 'g4',
- 'a' => 'g4',
- 'A' => 'g4',
- 'b' => 'g4',
- '^b'=> 'g1',
- 'c' => 'g4',
- 'C' => 'g6',
- 'd' => 'g4',
- 'D' => 'g4',
- '^d'=> 'g4',
- 'e' => 'g4 linkvi',
- 'E' => 'g4 linkvi',
- '^e'=> 'g4',
- 'f' => 'g4',
- '^f'=> 'g6',
- '+f'=> 'g4',
- 'F' => 'g4',
- 'G' => 'g1',
- 'h' => 'g1',
- 'i' => 'g6',
- '+k'=> 'g4',
- 'l' => 'g1',
- 'm' => 'g4',
- 'M' => 'g4',
- '^m'=> 'g1',
- 'n' => 'g6',
- 'o' => 'g4 ext',
- '^o'=> 'g4',
- 'p' => 'g1', #TODO
- 'P' => 'g8 mode',
- 'r' => 'g4',
- 'R' => 'g4',
- 's' => 'g4',
- 'S' => 'g4 menumS',
- 't' => 'g4',
- 'T' => 'g4',
- '^t'=> 'g4',
- 'w' => 'g6',
- 'u' => 'g6',
- 'v' => 'g1',
+ '|' => ['g4', "pipe attach<>m<>ent"],
+ 'a' => ['g4', "attach file"],
+ 'A' => ['g4', "attach messag<>e"],
+ 'b' => ['g4', "edit bcc"],
+ '^b'=> ['g1', "url<>view"],
+ 'c' => ['g4', "edit cc"],
+ 'C' => ['g6', "copy file"],
+ 'd' => ['g4', "desc<>ribe attach<>m<>ent"],
+ 'D' => ['g4', "delete attach<>m<>ent"],
+ '^d'=> ['g4', "dispo<>sition tog<>gle"],
+ 'e' => ['g4 linkvi', "edit body"],
+ 'E' => ['g4 linkvi', "edit all"],
+ '^e'=> ['g4', "edit encoding"],
+ 'f' => ['g4', "edit fcc"],
+ '^f'=> ['g6', "forget pass<>phrase"],
+ '+f'=> ['g4', "edit from"],
+ 'F' => ['g4', "filter attach<>m<>ent"],
+ 'G' => ['g1', "get attach<>m<>ent"],
+ 'h' => ['g1', "display message"],
+ 'i' => ['g6', "run ispell"],
+ '+k'=> ['g4', "attach PGP key"],
+ 'l' => ['g1', "print attach<>m<>ent"],
+ 'm' => ['g4', "edit attach<>m<>ent\nMime-appropriate open"],
+ 'M' => ['g4', "edit mix"],
+ '^m'=> ['g1', "view attach<>m<>ent"],
+ 'n' => ['g6', "new attach<>m<>ent"],
+ 'o' => ['g4 ext', "autocrypt toggle"], #TODO
+ '^o'=> ['g4', "rename attach<>m<>ent"],
+ 'p' => ['g1', "PGP menu"], #TODO
+ 'P' => ['g8 mode', "post<>pone"],
+ 'r' => ['g4', "edit reply<>-to"],
+ 'R' => ['g4', "rename attach<>m<>ent"],
+ 's' => ['g4', "edit subject"],
+ 'S' => ['g4 menumS', "s/mime options"],
+ 't' => ['g4', "edit to"],
+ 'T' => ['g4', "enter tags"], #TODO
+ '^t'=> ['g4', "ctype attach<>m<>ent"],
+ 'w' => ['g6', "copy to folder"],
+ 'u' => ['g6', "unlink toggle"],
+ 'v' => ['g1', "preview alt fil<>t<>er"], # m+v mV
'+v'=> 'g1',
- 'V' => 'g1',
- 'U' => 'g4',
- 'y' => 'g7',
+ 'V' => ['g1', "preview mailcap filter"],
+ 'U' => ['g4', "encode attach<>m<>ent"],
+ 'y' => ['g7', "send"],
+ # ^xe
}, # compose
w => {
- "\e"=> 'g9 mode',
- 'D' => 'g4',
- 'd' => '=wD',
- 'N' => 'g4',
- 'n' => '=wN',
- 'O' => 'g4',
- 'o' => '=wO',
- 'r' => 'g4',
- 'R' => '=wr',
- '*' => 'g4',
- '!' => 'g4',
+ "\e"=> $esc,
+ 'D' => ['g4', "deleted"],
+ 'd' => \'wD',
+ 'N' => ['g4', "new"],
+ 'n' => \'wN',
+ 'O' => ['g4', "old"],
+ 'o' => \'wO',
+ 'r' => ['g4', "replied"],
+ 'R' => \'wr',
+ '*' => ['g4', "tagged"],
+ '!' => ['g4', "flagged"],
}, # flag
'/~' => {
- "\e"=> 'g9 mode',
- A => 'g3',
- b => 'g3 arg',
- B => 'g3 arg',
- c => 'g3 arg',
- C => 'g3 arg',
- d => 'g3 arg',
- D => 'g3',
- e => 'g3 arg',
- E => 'g3',
- f => 'g3 arg',
- F => 'g3',
- g => 'g3',
- G => 'g3',
- h => 'g3 arg',
- H => 'g3 arg',
- i => 'g3 arg',
- k => 'g3',
- L => 'g3 arg',
- l => 'g3',
- m => 'g3 arg',
- M => 'g3 arg',
- n => 'g3 arg',
- N => 'g3',
- O => 'g3',
- p => 'g3',
- P => 'g3',
- Q => 'g3',
- r => 'g3 arg',
- R => 'g3',
- s => 'g3',
- S => 'g3',
- t => 'g3 arg',
- T => 'g3',
- u => 'g3',
- U => 'g3',
- v => 'g3',
- V => 'g3',
- x => 'g3 arg',
- X => 'g3 arg',
- y => 'g3 arg',
- z => 'g3 arg',
- '=' => 'g3',
- '$' => 'g3',
- '(' => 'g3 arg',
- '<' => 'g3 arg',
- '>' => 'g3 arg',
+ "\e"=> $esc,
+ 'A' => ['g3', => "all"],
+ 'b' => ['g3 arg', => "msg body"],
+ 'B' => ['g3 arg', => "whole msg"],
+ 'c' => ['g3 arg', => "cc address"],
+ 'C' => ['g3 arg', => "to or cc address"],
+ 'd' => ['g3 arg', => "date sent ran<>g<>e"],
+ 'D' => ['g3', => "deleted"],
+ 'e' => ['g3 arg', => "sender"],
+ 'E' => ['g3', => "expired"],
+ 'f' => ['g3 arg', => "from"],
+ 'F' => ['g3', => "flagged"],
+ 'g' => ['g3', => "signed"],
+ 'G' => ['g3', => "encryp<>ted"],
+ 'h' => ['g3 arg', => "header"],
+ 'H' => ['g3 arg', => "spam attr<>ib<>ute"],
+ 'i' => ['g3 arg', => "msg id"],
+ 'k' => ['g3', => "pgp key"],
+ 'L' => ['g3 arg', => "receiv<>d by"],
+ 'l' => ['g3', => "mailing list"],
+ 'm' => ['g3 arg', => "num<>ber ran<>g<>e"],
+ 'M' => ['g3 arg', => "mime type"],
+ 'n' => ['g3 arg', => "score range"],
+ 'N' => ['g3', => "new"],
+ 'O' => ['g3', => "old"],
+ 'p' => ['g3', => "to you"],
+ 'P' => ['g3', => "by you"],
+ 'Q' => ['g3', => "replies"],
+ 'r' => ['g3 arg', => "receive date ran<>ge"],
+ 'R' => ['g3', => "read"],
+ 's' => ['g3', => "subject"],
+ 'S' => ['g3', => "super<>seded"],
+ 't' => ['g3 arg', => "to address"],
+ 'T' => ['g3', => "tagged"],
+ 'u' => ['g3', => "subscr<>ibed list"],
+ 'U' => ['g3', => "unread"],
+ 'v' => ['g3', => "collapsed thread"],
+ 'V' => ['g3', => "verified"],
+ 'x' => ['g3 arg', => "refer<>ence"],
+ 'X' => ['g3 arg', => "attach<>ments"],
+ 'y' => ['g3 arg', => "x-label"],
+ 'z' => ['g3 arg', => "size range"],
+ '=' => ['g3', => "dupli<>cate"],
+ '$' => ['g3', => "unrefer<>enced"],
+ '(' => ['g3 arg', => "in thread"],
+ '<' => ['g3 arg', => "parent match"],
+ '>' => ['g3 arg', => "child match"],
}, # search option
},
}
rows => [3, 2, 1, 0],
moderows => '4321-421',
-key => {
- 'b' => "step left down\nnumpad 1",
- 'j' => "step down\nnumpad 2",
- 'n' => "step right down\nnumpad 3",
- 'h' => "step left\nnumpad 4",
- 'l' => "step right\nnumpad 6",
- 'y' => "step left up\nnumpad 7",
- 'k' => "step up\nnumpad 8",
- 'u' => "step right up\nnumpad 9",
-
- 'B' => "go left down\nshift numpad 1",
- 'J' => "go down\nshift numpad 2",
- 'N' => "go right down\nshift numpad 3",
- 'H' => "go left\nshift numpad 4",
- 'L' => "go right\nshift numpad 6",
- 'Y' => "go left up\nshift numpad 7",
- 'K' => "go up\nshift numpad 8",
- 'U' => "go right up\nshift numpad 9",
-
- '^b'=> "run left down\nnumpad 5 1",
- '^j'=> "run down\nnumpad 5 2",
- '^n'=> "run right down\nnumpad 5 3",
- '^h'=> "run left\nnumpad 5 4",
- '^l'=> "run right\nnumpad 5 6",
- '^y'=> "run left up\nnumpad 5 7",
- '^k'=> "run up\nnumpad 5 8",
- '^u'=> "run right up\nnumpad 5 9",
-
- 'g' => "run until interest",
- 'm' => "m<>ove blind\nno pickup",
- 'M' => "go far",
- 'G' => "g any<>where\nfollow branches",
-
- '?' => "help menu",
- '+?'=> "more help",
- '/' => "explain symbol",
- '&' => "tell com<>m<>and",
- '<' => "climb up ladder",
- '>' => "desc<>ent ladder",
- '.' => "rest (noop)",
- '_' => "travel to",
-
- '+2'=> "two<>weapon toggle",
- 'a' => "apply tool",
- 'A' => "remove all armor",
- '^a'=> "redo comm<>and\nAgain",
- '+a'=> "adjust inv<>ent<>ory",
- 'c' => "close door",
- 'C' => "call monster",
- '^c'=> "panic quit",
- '+c'=> "chat",
- 'd' => "drop item",
- 'D' => "drop items",
- '^d'=> "kick",
- '+d'=> "dip",
- 'e' => "eat food",
- 'E' => "en<>grave",
- '+e'=> "weapon skills\nEnhance",
- 'f' => "fire quiver",
- 'F' => "fight monster",
- '+f'=> "force lock",
- 'i' => "invent<>ory",
- 'I' => "invent<>ory part",
- '+i'=> "invoke object",
- '+j'=> "jump",
- '+l'=> "loot",
- '+m'=> "mons<>ter abil<>ity",
- '+n'=> "name item<>(s)",
- 'o' => "open door",
- 'O' => "options",
- '^o'=> "overview levels",
- '+o'=> "offer sacrifice",
- 'p' => "pay bill",
- 'P' => "put on",
- '^p'=> "repeat message",
- '+p'=> "pray",
- 'q' => "drink\nQuaff",
- 'Q' => "quiver ammo",
- '+q'=> "exit game\nQuit",
- 'r' => "read scroll",
- 'R' => "put off\nRemove accessory",
- '^r'=> "redraw",
- '+r'=> "rub object",
- 's' => "search secrets",
- 'S' => "save game",
- '+s'=> "sit down",
- 't' => "throw<>/shoot",
- 'T' => "remove armor",
- '^t'=> "teleport",
- '+t'=> "turn undead",
- '+u'=> "untrap",
- 'v' => "version",
- 'V' => "verbose version",
- '+v'=> "compile details",
- 'w' => "wield weap<>on",
- 'W' => "wear armor",
- '+w'=> "wipe face",
- 'x' => "swap weapons\nXchange",
- 'X' => "explore mode",
- '^x'=> "show stats",
- 'z' => "zap wand",
- 'Z' => "cast spell",
- '^z'=> "suspend game",
-
- ':' => "look here",
- ';' => "look else<>where",
- ',' => "pick up",
- '@' => "toggle pick<>up",
- '^' => "show trap",
- ')' => "show weapon",
- '[' => "show armor",
- '=' => "show rings",
- '"' => "show amulet",
- '(' => "show tools",
- '*' => "show equip<>ment",
- '$' => "count gold",
- '+' => "list spells",
- '\\'=> "discover<>ed obj<>ects",
- '`' => "types ident<>if<>ied",
- '!' => "shell escape",
- '#' => "more comm<>ands",
-
- 'DB' => 'drop blessed',
- 'DU' => 'drop uncursed',
- 'DC' => 'drop cursed',
- 'DX' => 'drop unknown',
- 'Da' => 'drop all',
- 'Di' => "invent<>ory",
- 'Du' => 'drop unpaid',
- 'Dm' => 'drop any',
- 'D%' => 'drop more',
-
- 'I*' => 'list gems',
- 'Iu' => 'list unpaid',
- 'Ix' => 'list billed',
- 'I$' => 'count money',
- 'IB' => 'list blessed',
- 'IU' => 'list uncurs<>e<>d',
- 'IC' => 'list cursed',
- 'IX' => 'list un<>know<>n',
-},
-
mode => {
'' => 'normal gameplay',
'I' => 'inventory type',
def => {
'' => {
- 'b' => 'g2',
- 'j' => 'g2',
- 'n' => 'g2',
- 'h' => 'g2',
- 'l' => 'g2',
- 'y' => 'g2',
- 'k' => 'g2',
- 'u' => 'g2',
-
- 'B' => 'g3',
- 'J' => 'g3',
- 'N' => 'g3',
- 'H' => 'g3',
- 'L' => 'g3',
- 'Y' => 'g3',
- 'K' => 'g3',
- 'U' => 'g3',
-
- '^b'=> 'g3',
- '^j'=> 'g3',
- '^n'=> 'g3',
- '^h'=> 'g3',
- '^l'=> 'g3',
- '^y'=> 'g3',
- '^k'=> 'g3',
- '^u'=> 'g3',
-
- 'g' => 'g3 argm',
- 'm' => 'g3 argm',
- 'M' => 'g3 argm',
- 'G' => 'g3 argm',
-
- '?' => 'g8 mode?', #help
- '+?'=> 'g8',
- '/' => 'g6 arg mode/', #whatis
- '&' => 'g6 arg',
- '<' => 'g2', #up
- '>' => 'g2', #down
- '.' => 'g2', #rest
- '_' => 'g3 argM', #travel
-
- '+2'=> 'g4', #twoweapon
- 'a' => 'g4 argi', #apply
- 'A' => 'g4', #armor
- '^a'=> 'g4', #again
- '+a'=> 'g6', #adjust
- 'c' => 'g4 argm', #close
- 'C' => 'g4 arg', #call
- '^c'=> 'g6',
- '+c'=> 'g4 arg', #chat
- 'd' => 'g4 argi', #drop
- 'D' => 'g4 arg modeD', #Drop
- '^d'=> 'g4 argm', #kick
- '+d'=> 'g4 argi', #dip
- 'e' => 'g4 argi', #eat
- 'E' => 'g4 argi', #engrave
- '+e'=> 'g4', #enhance
- 'f' => 'g4 argm', #fire
- 'F' => 'g4 argm', #fight
- '+f'=> 'g4', #force
- 'i' => 'g7', #invent
- 'I' => 'g7 arg modeI', #Invent
- '+i'=> 'g4 argi', #invoke
- '+j'=> 'g4', #jump
- '+l'=> 'g4', #loot
- '+m'=> 'g4', #monster
- '+n'=> 'g7 arg', #name
- 'o' => 'g4 argm', #open
- 'O' => 'g8 modeO', #options
- '^o'=> 'g6',
- '+o'=> 'g4 argi', #offer
- '+O'=> "=^o", #overview
- 'p' => 'g4', #pay
- 'P' => 'g4 argi', #puton
- '^p'=> 'g6', #prevmsg
- '+p'=> 'g4 arg', #pray
- 'q' => 'g4 argi', #quaff
- 'Q' => 'g4 argi', #quiver
- '+q'=> 'g6', #quit
- 'r' => 'g4 argi', #read
- 'R' => 'g4 argi', #remove
- '^r'=> 'g6', #redraw
- '+r'=> 'g4 argi', #rub
- 's' => 'g4', #search
- 'S' => 'g6', #save
- '+s'=> 'g4', #sit
- 't' => 'g4 argm', #throw
- 'T' => 'g4 argi', #takeoff
- '^t'=> 'g4', #'port
- '+t'=> 'g4', #turn
- '+u'=> 'g4', #untrap
- 'v' => 'g6',
- 'V' => 'g6', #history
- '+v'=> 'g6', #version
- 'w' => 'g4 argi', #wield
- 'W' => 'g4 argi', #wear
- '+w'=> 'g4', #wipe
- 'x' => 'g4', #xchange
- 'X' => 'g6', #explore
- '^x'=> 'g6', #show
- 'z' => 'g4 argm', #zap
- 'Z' => 'g4 argi', #Zap
- '^z'=> 'g6', #suspend
-
- ':' => 'g6', #look
- ';' => 'g6 argM', #farlook
- ',' => 'g4', #pickup
- '@' => 'g6',
- '^' => 'g6 argm', #trap_id
- ')' => 'g7', #seeweapon
- '[' => 'g7', #seearmor
- '=' => 'g7', #seerings
- '"' => 'g7', #seeamulet
- '(' => 'g7', #seetools
- '*' => 'g7', #seeall
- '$' => 'g6', #seegold
- '+' => 'g7', #seespells
- '\\'=> 'g7', #known
- '`' => 'g7', #knownclass
- '!' => 'g6', #sh
- '#' => 'g8',
+ 'b' => ['g2', "step left down\nnumpad 1"],
+ 'j' => ['g2', "step down\nnumpad 2"],
+ 'n' => ['g2', "step right down\nnumpad 3"],
+ 'h' => ['g2', "step left\nnumpad 4"],
+ 'l' => ['g2', "step right\nnumpad 6"],
+ 'y' => ['g2', "step left up\nnumpad 7"],
+ 'k' => ['g2', "step up\nnumpad 8"],
+ 'u' => ['g2', "step right up\nnumpad 9"],
+
+ 'B' => ['g3', "go left down\nshift numpad 1"],
+ 'J' => ['g3', "go down\nshift numpad 2"],
+ 'N' => ['g3', "go right down\nshift numpad 3"],
+ 'H' => ['g3', "go left\nshift numpad 4"],
+ 'L' => ['g3', "go right\nshift numpad 6"],
+ 'Y' => ['g3', "go left up\nshift numpad 7"],
+ 'K' => ['g3', "go up\nshift numpad 8"],
+ 'U' => ['g3', "go right up\nshift numpad 9"],
+
+ '^b'=> ['g3', "run left down\nnumpad 5 1"],
+ '^j'=> ['g3', "run down\nnumpad 5 2"],
+ '^n'=> ['g3', "run right down\nnumpad 5 3"],
+ '^h'=> ['g3', "run left\nnumpad 5 4"],
+ '^l'=> ['g3', "run right\nnumpad 5 6"],
+ '^y'=> ['g3', "run left up\nnumpad 5 7"],
+ '^k'=> ['g3', "run up\nnumpad 5 8"],
+ '^u'=> ['g3', "run right up\nnumpad 5 9"],
+
+ 'g' => ['g3 argm', "run until interest"],
+ 'm' => ['g3 argm', "m<>ove blind\nno pickup"],
+ 'M' => ['g3 argm', "go far"],
+ 'G' => ['g3 argm', "g any<>where\nfollow branches"],
+
+ '?' => ['g8 mode?', "help menu"], #help
+ '+?'=> ['g8', "more help"],
+ '/' => ['g6 arg mode/', "explain symbol"], #whatis
+ '&' => ['g6 arg', "tell com<>m<>and"],
+ '<' => ['g2', "climb up ladder"], #up
+ '>' => ['g2', "desc<>ent ladder"], #down
+ '.' => ['g2', "rest (noop)"], #rest
+ '_' => ['g3 argM', "travel to"], #travel
+
+ '+2'=> ['g4', "two<>weapon toggle"], #twoweapon
+ 'a' => ['g4 argi', "apply tool"], #apply
+ 'A' => ['g4', "remove all armor"], #armor
+ '^a'=> ['g4', "redo comm<>and\nAgain"], #again
+ '+a'=> ['g6', "adjust inv<>ent<>ory"], #adjust
+ 'c' => ['g4 argm', "close door"], #close
+ 'C' => ['g4 arg', "call monster"], #call
+ '^c'=> ['g6', "panic quit"],
+ '+c'=> ['g4 arg', "chat"], #chat
+ 'd' => ['g4 argi', "drop item"], #drop
+ 'D' => ['g4 arg modeD', "drop items"], #Drop
+ '^d'=> ['g4 argm', "kick"], #kick
+ '+d'=> ['g4 argi', "dip"], #dip
+ 'e' => ['g4 argi', "eat food"], #eat
+ 'E' => ['g4 argi', "en<>grave"], #engrave
+ '+e'=> ['g4', "weapon skills\nEnhance"], #enhance
+ 'f' => ['g4 argm', "fire quiver"], #fire
+ 'F' => ['g4 argm', "fight monster"], #fight
+ '+f'=> ['g4', "force lock"], #force
+ 'i' => ['g7', "invent<>ory"], #invent
+ 'I' => ['g7 arg modeI', "invent<>ory part"], #Invent
+ '+i'=> ['g4 argi', "invoke object"], #invoke
+ '+j'=> ['g4', "jump"], #jump
+ '+l'=> ['g4', "loot"], #loot
+ '+m'=> ['g4', "mons<>ter abil<>ity"], #monster
+ '+n'=> ['g7 arg', "name item<>(s)"], #name
+ 'o' => ['g4 argm', "open door"], #open
+ 'O' => ['g8 modeO', "options"], #options
+ '^o'=> ['g6', "overview levels"],
+ '+o'=> ['g4 argi', "offer sacrifice"], #offer
+ 'p' => ['g4', "pay bill"], #pay
+ 'P' => ['g4 argi', "put on"], #puton
+ '^p'=> ['g6', "repeat message"], #prevmsg
+ '+p'=> ['g4 arg', "pray"], #pray
+ 'q' => ['g4 argi', "drink\nQuaff"], #quaff
+ 'Q' => ['g4 argi', "quiver ammo"], #quiver
+ '+q'=> ['g6', "exit game\nQuit"], #quit
+ 'r' => ['g4 argi', "read scroll"], #read
+ 'R' => ['g4 argi', "put off\nRemove accessory"], #remove
+ '^r'=> ['g6', "redraw"], #redraw
+ '+r'=> ['g4 argi', "rub object"], #rub
+ 's' => ['g4', "search secrets"], #search
+ 'S' => ['g6', "save game"], #save
+ '+s'=> ['g4', "sit down"], #sit
+ 't' => ['g4 argm', "throw<>/shoot"], #throw
+ 'T' => ['g4 argi', "remove armor"], #takeoff
+ '^t'=> ['g4', "teleport"], #'port
+ '+t'=> ['g4', "turn undead"], #turn
+ '+u'=> ['g4', "untrap"], #untrap
+ 'v' => ['g6', "version"],
+ 'V' => ['g6', "verbose version"], #history
+ '+v'=> ['g6', "compile details"], #version
+ 'w' => ['g4 argi', "wield weap<>on"], #wield
+ 'W' => ['g4 argi', "wear armor"], #wear
+ '+w'=> ['g4', "wipe face"], #wipe
+ 'x' => ['g4', "swap weapons\nXchange"], #xchange
+ 'X' => ['g6', "explore mode"], #explore
+ '^x'=> ['g6', "show stats"], #show
+ 'z' => ['g4 argm', "zap wand"], #zap
+ 'Z' => ['g4 argi', "cast spell"], #Zap
+ '^z'=> ['g6', "suspend game"], #suspend
+
+ ':' => ['g6', "look here"], #look
+ ';' => ['g6 argM', "look else<>where"], #farlook
+ ',' => ['g4', "pick up"], #pickup
+ '@' => ['g6', "toggle pick<>up"],
+ '^' => ['g6 argm', "show trap"], #trap_id
+ ')' => ['g7', "show weapon"], #seeweapon
+ '[' => ['g7', "show armor"], #seearmor
+ '=' => ['g7', "show rings"], #seerings
+ '"' => ['g7', "show amulet"], #seeamulet
+ '(' => ['g7', "show tools"], #seetools
+ '*' => ['g7', "show equip<>ment"], #seeall
+ '$' => ['g6', "count gold"], #seegold
+ '+' => ['g7', "list spells"], #seespells
+ '\\'=> ['g7', "discover<>ed obj<>ects"], #known
+ '`' => ['g7', "types ident<>if<>ied"], #knownclass
+ '!' => ['g6', "shell escape"], #sh
+ '#' => ['g8', "more comm<>ands"],
},
'D' => {
- "\e" => 'g8 mode', # static reset button, even though it's not (officially) in the game
-
- 'B' => 'g4',
- 'U' => 'g4',
- 'C' => 'g4',
- 'X' => 'g4',
- 'a' => 'g4',
- 'i' => 'g6',
- 'u' => 'g4',
- 'm' => 'g4 argi',
- '%' => 'g4 arg',
+ "\e" => ['g8 mode'], # static reset button, even though it's not (officially) in the game
+
+ 'B' => ['g4', 'drop blessed'],
+ 'U' => ['g4', 'drop uncursed'],
+ 'C' => ['g4', 'drop cursed'],
+ 'X' => ['g4', 'drop unknown'],
+ 'a' => ['g4', 'drop all'],
+ 'i' => ['g6', "invent<>ory"],
+ 'u' => ['g4', 'drop unpaid'],
+ 'm' => ['g4 argi', 'drop any'],
+ '%' => ['g4 arg', 'drop more'],
},
'I' => {
- "\e" => 'g8 mode',
-
- '*' => 'g6',
- 'u' => 'g6',
- 'x' => 'g6',
- '$' => 'g6',
- 'B' => 'g6',
- 'U' => 'g6',
- 'C' => 'g6',
- 'X' => 'g6',
+ "\e" => ['g8 mode'],
+
+ '*' => ['g6', 'list gems'],
+ 'u' => ['g6', 'list unpaid'],
+ 'x' => ['g6', 'list billed'],
+ '$' => ['g6', 'count money'],
+ 'B' => ['g6', 'list blessed'],
+ 'U' => ['g6', 'list uncurs<>e<>d'],
+ 'C' => ['g6', 'list cursed'],
+ 'X' => ['g6', 'list un<>know<>n'],
},
},
}
rows => [4, 3, 2],
moderows => '^x=213',
-key => {
- '+<' => "history start",
- '+>' => "history end",
- '+?' => "list complet<>ion<>s",
- '^@' => "set mark",
-
- '+#' => "prefix comm<>en<>t",
- '+&' => "tilde expand",
- '+*' => "complet<>e all",
- '+.' => "insert last",
-
- '^[' => "meta",
- '+\\'=> "delete whitesp<>ace",
- '^]' => "find char",
- '^+]'=> "rev find char",
- '^_' => "undo",
-
- '+~' => "user<>name exp<>and",
- '+!' => "cmd expand",
- '+@' => "host<>name exp<>and",
- '+$' => "variable expand",
- '+^' => "history expand",
- '+/' => "filename expand",
-
- '^a' => "begin of line",
- '^b' => "char back<>w<>ard<>s",
- '+b' => "word back<>w<>ard<>s",
- '^c' => "cancel comm<>and",
- '+c' => "capital<>ise word",
- '^d' => "delete char",
- '+d' => "delete word rem<>ain<>der",
-# '^e' => "emacs mode",
- '^e' => "end of line",
- '^f' => "char forward",
- '+f' => "word forward",
- '^g' => "abort cmd, bell",
- '^h' => "back<>space",
- '^+h'=> "delete bound word",
- '^i' => "auto<>complet<>e\n(tab)",
- '^+j'=> "vim mode",
- '^k' => "delete till eol",
- '^l' => "clear screen",
- '+l' => "lowcase word",
- '^m' => "enter line\n(enter)",
- '^n' => "history next",
- '+n' => "match history",
- '^o' => "enter and next",
- '^p' => "history back",
- '+p' => "rev match history",
-# '^q' => "\nQuote", #TODO fix partial override
- '^r' => "reverse history",
- '+r' => "full undo\nRevert",
- '^s' => "search history",
- '^t' => "move char forw<>ard\nTranspose char",
- '+t' => "move word forw<>ard\nTranspose word",
- '^u' => "delete till bol", # unix
- '+u' => "upcase word",
- '^v' => "verbat<>im char",
- '^w' => "delete word", # unix
- '^x' => "extend<>ed",
- '^y' => "yank top",
- '+y' => "rotate yank",
- '^+y'=> "yank arg",
- '^z' => "back<>ground",
-
- '^x(' => "start macro",
- '^x)' => "end macro",
- '^xe' => "run macro\nExecute",
- '^x^e' => "editor",
- '^x^r' => "reload inputrc",
- '^x^x' => "swap cursor\neXchange",
- '^x^v' => "shell version",
-
- # globally label escape as meta key
- "\e" => "+",
- "^x\e" => "+",
-},
-
mode => {
'' => "emacs mode",
'^x' => "emacs ctrl-x bindings",
def => {
'' => {
- "\e" => 'g8',
-
- '+<' => 'g4',
- '+=' => '=+?', #TODO: v21 # emacs, not in v2.0
- '+>' => 'g4',
- '^?' => '=^h',
- '+?' => 'g1',
- '^@' => 'g8 v21', # not in v2.0
-
- '+#' => 'g6 v21', # not in v2.0
- '+&' => 'g6',
- '+*' => 'g6 v21', # not in v2.0
- '+.' => 'g4',
- '+~' => '=+&', # emacs
-
- '^[' => 'g8',
- '^+['=> '=^i',
- '+\\'=> 'g7',
- '^]' => 'g2 arg v21', # not in v2.0
- '^+]'=> 'g2 arg v21', # not in v2.0
- '^_' => 'g4',
- '+_' => '=+.',
-
- '+~' => 'g6 xbash', # common emacs => '=+&'
- '+!' => 'g6 xbash',
- '+@' => 'g6 xbash',
- '+$' => 'g6 xbash',
- '+^' => 'g4 xbash',
- '+/' => 'g1 xbash',
-
- '^a' => 'g2',
- '^b' => 'g2',
- '+b' => 'g2',
- '^c' => 'g8 xbash',
- '+c' => 'g6',
- '^d' => 'g7',
- '+d' => 'g7 ring',
- # '^e' => 'g9',
- '^e' => 'g2',
- '^f' => 'g2',
- '+f' => 'g2',
- '^g' => 'g8',
- '^+g'=> '=^g',
- '^h' => 'g7',
- '^+h'=> 'g7 ring', #TODO
- '^i' => 'g6',
- '^+i'=> '=^v^i',
- '^j' => '=^m',
- '^+j'=> 'g9', #TODO: mode^+j
- '^k' => 'g7 ring',
- '^l' => 'g1',
- '+l' => 'g6',
- '^m' => 'g4',
- '^+m'=> '=^+j',
- '^n' => 'g4',
- '+n' => 'g4',
- '^o' => 'g4 xbash',
- '^p' => 'g4',
- '+p' => 'g4',
- '^q' => '=^v',
- '^r' => 'g4',
- '+r' => 'g4',
- '^+r'=> '=+r',
- '^s' => 'g4',
- '^t' => 'g6',
- '+t' => 'g6',
- '^u' => 'g7 ring',
- '+u' => 'g6',
- '^v' => 'g8',
- '^w' => 'g7 ring',
- '^x' => 'g9 arg mode^x',
- '^y' => 'g4',
- '+y' => 'g4 ring',
- '^+y'=> "yank arg",
- '^z' => 'g8 xbash',
+ "\e" => ['g8', "+"], # label escape as meta key
+
+ '+<' => ['g4', "history start"],
+ '+=' => \'+?', #TODO: v21 # emacs, not in v2.0
+ '+>' => ['g4', "history end"],
+ '^?' => \'^h',
+ '+?' => ['g1', "list complet<>ion<>s"],
+ '^@' => ['g8 v21', "set mark"], # not in v2.0
+
+ '+#' => ['g6 v21', "prefix comm<>en<>t"], # not in v2.0
+ '+&' => ['g6', "tilde expand"],
+ '+*' => ['g6 v21', "complet<>e all"], # not in v2.0
+ '+.' => ['g4', "insert last"],
+ '+~' => \'+&', # common emacs
+
+ '^[' => ['g8', "meta"],
+ '^+['=> \'^i',
+ '+\\'=> ['g7', "delete whitesp<>ace"],
+ '^]' => ['g2 arg v21', "find char"], # not in v2.0
+ '^+]'=> ['g2 arg v21', "rev find char"], # not in v2.0
+ '^_' => ['g4', "undo"],
+ '+_' => \'+.',
+
+ '+~' => ['g6 xbash', "user<>name exp<>and"], # overrides alias
+ '+!' => ['g6 xbash', "cmd expand"],
+ '+@' => ['g6 xbash', "host<>name exp<>and"],
+ '+$' => ['g6 xbash', "variable expand"],
+ '+^' => ['g4 xbash', "history expand"],
+ '+/' => ['g1 xbash', "filename expand"],
+
+ '^a' => ['g2', "begin of line"],
+ '^b' => ['g2', "char back<>w<>ard<>s"],
+ '+b' => ['g2', "word back<>w<>ard<>s"],
+ '^c' => ['g8 xbash', "cancel comm<>and"],
+ '+c' => ['g6', "capital<>ise word"],
+ '^d' => ['g7', "delete char"],
+ '+d' => ['g7 ring', "delete word rem<>ain<>der"],
+ # '^e' => ['g9', "emacs mode"],
+ '^e' => ['g2', "end of line"],
+ '^f' => ['g2', "char forward"],
+ '+f' => ['g2', "word forward"],
+ '^g' => ['g8', "abort cmd, bell"],
+ '^+g'=> \'^g',
+ '^h' => ['g7', "back<>space"],
+ '^+h'=> ['g7 ring', "delete bound word"], #TODO
+ '^i' => ['g6', "auto<>complet<>e\n(tab)"],
+ '^+i'=> \'^v^i',
+ '^j' => \'^m',
+ '^+j'=> ['g9', "vim mode"], #TODO: mode^+j
+ '^k' => ['g7 ring', "delete till eol"],
+ '^l' => ['g1', "clear screen"],
+ '+l' => ['g6', "lowcase word"],
+ '^m' => ['g4', "enter line\n(enter)"],
+ '^+m'=> \'^+j',
+ '^n' => ['g4', "history next"],
+ '+n' => ['g4', "match history"],
+ '^o' => ['g4 xbash', "enter and next"],
+ '^p' => ['g4', "history back"],
+ '+p' => ['g4', "rev match history"],
+ '^q' => [undef, \'^v', "\nQuote"], #TODO fix partial override
+ '^r' => ['g4', "reverse history"],
+ '+r' => ['g4', "full undo\nRevert"],
+ '^+r'=> \'+r',
+ '^s' => ['g4', "search history"],
+ '^t' => ['g6', "move char forw<>ard\nTranspose char"],
+ '+t' => ['g6', "move word forw<>ard\nTranspose word"],
+ '^u' => ['g7 ring', "delete till bol"], # unix
+ '+u' => ['g6', "upcase word"],
+ '^v' => ['g8', "verbat<>im char"],
+ '^w' => ['g7 ring', "delete word"], # unix
+ '^x' => ['g9 arg mode^x', "extend<>ed"],
+ '^y' => ['g4', "yank top"],
+ '+y' => ['g4 ring', "rotate yank"],
+ '^+y'=> ["yank arg", "yank arg"],
+ '^z' => ['g8 xbash', "back<>ground"],
},
'^x' => {
lead => "x̂",
- "\e" => 'g8 mode',
-
- '(' => 'g8',
- ')' => 'g8',
- 'e' => 'g8',
- '^e' => 'g6 xbash linkvi',
- '^g' => '=^g',
- '^h' => '=^u',
- '^r' => 'g8',
- '^u' => '=^_',
- '^x' => 'g2 v21', # not in v2.0
- '^v' => 'g1 xbash',
- '^?' => '=^x^h',
+ "\e" => ['g8 mode', "+"],
+
+ '(' => ['g8', "start macro"],
+ ')' => ['g8', "end macro"],
+ 'e' => ['g8', "run macro\nExecute"],
+ '^e' => ['g6 xbash linkvi', "editor"],
+ '^g' => \'^g',
+ '^h' => \'^u',
+ '^r' => ['g8', "reload inputrc"],
+ '^u' => \'^_',
+ '^x' => ['g2 v21', "swap cursor\neXchange"], # not in v2.0
+ '^v' => ['g1 xbash', "shell version"],
+ '^?' => \'^x^h',
},
},
}
],
keywords => [qw' screen terminal window manager '],
-key => {
- 'a' => "literal a",
- 'A' => "title", # title
- '^a'=> "last",
- 'b' => "send break", # break
- 'B' => "reopen break", # pow_break
- 'c' => "new", # screen
- 'C' => "clear", # clear
- 'd' => "detach", # detach
- 'D' => "detach logout", # pow_detach
- 'f' => "flow", # flow
- 'F' => "fit",
- '^g'=> "vbell", # vbell
- 'h' => "hard<>copy", # hardcopy
- 'H' => "log", # log
- 'i' => "prop<>erties", # info
- 'I' => "login on", #XXX
- '^i'=> "focus", # focus
- 'k' => "kill", # kill
- 'l' => "redraw", # redisplay
- 'L' => "login", # login
- 'm' => "last msg", # lastmsg
- 'M' => "moni<>tor", # monitor
- 'n' => "next", # next
- 'N' => "number", # number
- 'O' => "login off", #XXX
- '^o'=> "other", # other
- 'p' => "previous", # prev
- 'q' => "xon", # xon
- 'Q' => "only", # only
- 'r' => "wrap", # wrap
- 's' => 'xoff', # xoff
- 't' => "time", # time
- 'v' => "version",
- '^v'=> "digraph", # digraph
- 'w' => "windows", # windows
- 'W' => "width", # width
- 'x' => "lock screen", # lockscreen
- 'X' => "remove", # remove
- 'z' => "suspend", # suspend
- 'Z' => "reset",
-
- "'" => "select", # select
- '"' => "window<>list -b", # windowlist -b
- ':' => "colon", # colon
- "\e"=> "copy", # copy
- '^]'=> "paste .", # paste .
- '|' => "split vert", # split -v
- '{' => "history", # history
- '}' => "history", # history
- '=' => "remove buf<>fer", # removebuf
- '*' => "displays", # displays
- '.' => "dump<>termcap", # dumptermcap
- ',' => "license", # license
- '-' => "select -", # select -
- '_' => "silence", # silence
- '>' => "writebuf", # writebuf
- '<' => "readbuf", # readbuf
-},
-
mode => {
'' => 'index',
},
def => {
'' => {
- 'a' => 'g7',
- 'A' => 'g9 args', # title
- '^a'=> 'g3',
- 'b' => 'g7', # break
- 'B' => 'g7', # pow_break
- '^b'=> '=b',
- 'c' => 'g9', # screen
- 'C' => 'g2', # clear
- '^c'=> '=c',
- 'd' => 'g9', # detach
- 'D' => 'g9', # pow_detach
- '^d'=> '=d',
- 'f' => 'g4', # flow
- 'F' => 'g4',
- '^f'=> '=f',
- '^g'=> 'g4', # vbell
- 'h' => 'g6', # hardcopy
- 'H' => 'g5', # log
- '^h'=> '=^p',
- 'i' => 'g1', # info
- 'I' => 'g5', #XXX
- '^i'=> 'g2', # focus
- 'k' => 'g5', # kill
- 'K' => '=k',
- 'l' => 'g2', # redisplay
- 'L' => 'g5', # login
- '^l'=> '=l',
- 'm' => 'g1', # lastmsg
- 'M' => 'g5', # monitor
- '^m'=> '=m',
- 'n' => 'g3', # next
- 'N' => 'g1', # number
- '^n'=> '=n',
- 'O' => 'g5', #XXX
- '^o'=> 'g3', # other
- 'p' => 'g3', # prev
- '^p'=> '=p',
- 'q' => 'g4', # xon
- 'Q' => 'g2', # only
- '^q'=> '=q',
- 'r' => 'g4', # wrap
- '^r'=> '=r',
- 's' => 'g4', # xoff
- '^s'=> '=s',
- 't' => 'g1', # time
- '^t'=> '=t',
- 'v' => 'g1',
- '^v'=> 'g7 arg arg linkdigraphs', # digraph
- 'w' => 'g1', # windows
- 'W' => 'g4', # width
- '^w'=> '=w',
- 'x' => 'g9', # lockscreen
- 'X' => 'g2', # remove
- '^x'=> '=x',
- 'z' => 'g9', # suspend
- 'Z' => 'g9',
- '^z'=> '=z',
+ 'a' => ['g7', "literal a"],
+ 'A' => ['g9 args', "title"], # title
+ '^a'=> ['g3', "last"],
+ 'b' => ['g7', "send break"], # break
+ 'B' => ['g7', "reopen break"], # pow_break
+ '^b'=> \'b',
+ 'c' => ['g9', "new"], # screen
+ 'C' => ['g2', "clear"], # clear
+ '^c'=> \'c',
+ 'd' => ['g9', "detach"], # detach
+ 'D' => ['g9', "detach logout"], # pow_detach
+ '^d'=> \'d',
+ 'f' => ['g4', "flow"], # flow
+ 'F' => ['g4', "fit"],
+ '^f'=> \'f',
+ '^g'=> ['g4', "vbell"], # vbell
+ 'h' => ['g6', "hard<>copy"], # hardcopy
+ 'H' => ['g5', "log"], # log
+ '^h'=> \'^p',
+ 'i' => ['g1', "prop<>erties"], # info
+ 'I' => ['g5', "login on"], #XXX
+ '^i'=> ['g2', "focus"], # focus
+ 'k' => ['g5', "kill"], # kill
+ 'K' => \'k',
+ 'l' => ['g2', "redraw"], # redisplay
+ 'L' => ['g5', "login"], # login
+ '^l'=> \'l',
+ 'm' => ['g1', "last msg"], # lastmsg
+ 'M' => ['g5', "moni<>tor"], # monitor
+ '^m'=> \'m',
+ 'n' => ['g3', "next"], # next
+ 'N' => ['g1', "number"], # number
+ '^n'=> \'n',
+ 'O' => ['g5', "login off"], #XXX
+ '^o'=> ['g3', "other"], # other
+ 'p' => ['g3', "previous"], # prev
+ '^p'=> \'p',
+ 'q' => ['g4', "xon"], # xon
+ 'Q' => ['g2', "only"], # only
+ '^q'=> \'q',
+ 'r' => ['g4', "wrap"], # wrap
+ '^r'=> \'r',
+ 's' => ['g4', 'xoff'], # xoff
+ '^s'=> \'s',
+ 't' => ['g1', "time"], # time
+ '^t'=> \'t',
+ 'v' => ['g1', "version"],
+ '^v'=> ['g7 arg arg linkdigraphs', "digraph"], # digraph
+ 'w' => ['g1', "windows"], # windows
+ 'W' => ['g4', "width"], # width
+ '^w'=> \'w',
+ 'x' => ['g9', "lock screen"], # lockscreen
+ 'X' => ['g2', "remove"], # remove
+ '^x'=> \'x',
+ 'z' => ['g9', "suspend"], # suspend
+ 'Z' => ['g9', "reset"],
+ '^z'=> \'z',
- "'" => 'g3 arg', # select
- '"' => 'g3', # windowlist -b
- ':' => 'g4', # colon
- "\e"=> 'g6', # copy
- '[' => '=^[',
- '^['=> "=\e",
- '^]'=> 'g7', # paste .
- ']' => '=^]',
- '|' => 'g2', # split -v
- '{' => 'g7', # history
- '}' => 'g7', # history
- '=' => 'g6', # removebuf
- '^?'=> '=^h',
- '*' => 'g1', # displays
- '.' => 'g9', # dumptermcap
- ',' => 'g1', # license
- '-' => 'g3', # select -
- '_' => 'g5', # silence
- '>' => 'g6', # writebuf
- '<' => 'g6', # readbuf
- '^@'=> '=n',
+ "'" => ['g3 arg', "select"], # select
+ '"' => ['g3', "window<>list -b"], # windowlist -b
+ ':' => ['g4', "colon"], # colon
+ "\e"=> ['g6', "copy"], # copy
+ '[' => \'^[',
+ '^['=> \"\e",
+ '^]'=> ['g7', "paste ."], # paste .
+ ']' => \'^]',
+ '|' => ['g2', "split vert"], # split -v
+ '{' => ['g7', "history"], # history
+ '}' => ['g7', "history"], # history
+ '=' => ['g6', "remove buf<>fer"], # removebuf
+ '^?'=> \'^h',
+ '*' => ['g1', "displays"], # displays
+ '.' => ['g9', "dump<>termcap"], # dumptermcap
+ ',' => ['g1', "license"], # license
+ '-' => ['g3', "select -"], # select -
+ '_' => ['g5', "silence"], # silence
+ '>' => ['g6', "writebuf"], # writebuf
+ '<' => ['g6', "readbuf"], # readbuf
+ '^@'=> \'n',
},
},
}
{
title => 'vi/vim',
-version => 1.5,
+version => 1.6,
description => [
"Interactive cheat sheet for vi text editors, notably Vim,",
"describing each key in various modes.",
],
keywords => [qw' vi vim nvi '],
-key => {
-
- "\e"=> "normal mode",
- '~' => "case toggle",
- '!' => "filt<>er lines",
- '@' => "play macro",
- '#' => "rev. find word",
- '$' => "eol",
- '%' => "goto match",
- '^' => '"soft" bol',
- '&' => ":s rep<>eat",
- '*' => "find word",
- '(' => "begin senten<>ce",
- ')' => "end senten<>ce",
- '_' => '"soft" bol down',
- '+' => "next line",
- '`' => "goto mark",
- '0' => '"hard" bol',
- '^^'=> "edit alt. file",
- '-' => "prev line",
- '=' => "re<>ind<>ent",
- '?' => "find rev.",
- ';' => "repeat t/f/T/F",
- ':' => "ex cmd line",
- "'" => "goto mark bol",
- '"' => "use reg<>ister",
- '\\' => "reser<>ved",
- '^\\' => "to mode/<>ext<>ens<>ion<>s",
- ',' => "reverse t/T/f/F",
- '<' => "un<>ind<>ent",
- '.' => "repeat last cmd",
- '>' => "ind<>ent",
- '/' => "find",
- '[' => "move back<>ward<>s",
- '{' => "begin parag.",
- ']' => "move forw<>ard",
- '}' => "end parag.",
- '^]'=> "go to tag",
- '|' => "goto (1st) col",
-
- 'a' => "app<>end",
- 'A' => "app<>end to eol",
- '^a'=> "incr<>ement\nAdd one",
- 'b' => "prev word\nBack",
- 'B' => 'prev <span style="font-variant:small-caps">word</span>',
- '^b'=> "page up",
- 'c' => "chan<>ge",
- 'C' => "chan<>ge to eol",
- '^c'=> "abort",
- 'd' => "del<>ete",
- 'D' => "delete to eol",
- '^d'=> "scroll down",
- 'e' => "end word",
- 'E' => 'end <span style="font-variant:small-caps">word</span>',
- '^e'=> "window down\nExtra line",
- 'f' => "fwd to char",
- 'F' => "back<>wd to char",
- '^f'=> "page down\npage Forward",
- 'g' => "extra cmds",
- 'G' => "eof/<>goto ln",
- '^g'=> ":file (info)",
- 'h' => "<left>",
- 'H' => "screen top\nHome row",
- 'i' => "insert mode",
- 'I' => "insert at bol",
- '^i'=> "jump to newer\nIncrease position",
- 'j' => "<down>",
- 'J' => "join lines",
- 'k' => "<up>",
- 'K' => "help\nlooKup Keyword",
- 'l' => "<right>",
- 'L' => "screen bottom\nLowermost Line",
- '^l'=> "redraw",
- 'm' => "set mark",
- 'M' => "screen mid<>dle",
- 'n' => "next find",
- 'N' => "prev find",
- 'o' => "line below\nOpen",
- 'O' => "line above",
- '^o'=> "jump to older",
- 'p' => "paste after",
- 'P' => "paste before",
- 'q' => "rec<>ord macro\nQueue seQuence",
- 'Q' => "ex mode",
- '^q'=> "(xon)\nQome back",
- 'r' => "repl<>ace char",
- 'R' => "repl<>ace mode",
- '^r'=> "redo",
- 's' => "subst char",
- 'S' => "subst line",
- '^s'=> "(xoff)\nStop",
- 't' => "till char",
- 'T' => "back till char",
- '^t'=> "back tag", # backtrag :P
- 'u' => "undo",
- 'U' => "undo line",
- '^u'=> "scroll up",
- 'v' => "visual mode",
- 'V' => "visual lines",
- '^v'=> "visual block",
- 'w' => "next word",
- 'W' => 'next <span style="font-variant:small-caps">word</span>',
- '^w'=> "win<>dow cmds",
- 'x' => "delete char",
- 'X' => "back<>space",
- '^x'=> "subs<>tract",
- 'y' => "yank\n(copy)",
- 'Y' => "yank line",
- '^y'=> "window up\nYield",
- 'z' => "extra cmds",
- 'Z' => "quit",
- '^z'=> ":sus<>pend\nzzz (as in sleep)",
-
- 'g~' => "case toggl<>e",
- 'g@' => "oper<>at<>or<>func",
- 'g#' => "rev. find string",
- 'g$' => "virt<>ual eol",
- 'g^' => qq'"soft" bol v<>irt<>ual',
- 'g&' => ":s rep<>eat glob<>al<>ly\nGlobal substitute",
- 'g*' => "find string",
- 'g_' => qq'"soft" eol',
- 'g+' => "later undo",
- 'g`' => "to mark keepj<>umps",
- 'g8' => "char hex val<>ue<>s",
- 'g0' => "virtual bol",
- 'g-' => "earlier undo",
- "g\e"=> "normal mode",
- 'g]' => "go to tselect",
- 'g^]'=> "go to tjump",
- 'g;' => "to prev change pos",
- "g'" => "to mark keepj<>umps",
- 'g<' => "see prev cmd output",
- 'g?' => "rot13 encode",
- 'g,' => "to next change pos",
-
- 'ga' => "char value\nGet Ascii value",
- 'g^a'=> "mem usage stats",
- 'gd' => "local declar<>ation",
- 'gD' => "global declar<>ation",
- 'ge' => "back to word end",
- 'gE' => qq'back to <span style="font-variant:small-caps">word</span> end',
- 'gf' => "edit file at cur<>sor\nGoto File",
- 'gF' => "edit file + jump",
- 'gg' => "first line",
- 'g^g'=> "cur<>sor pos info",
- 'gh' => "select mode\nGet Highlighted",
- 'gH' => "select lines\nGet Highlighted",
- 'g^h'=> "select block\nGet Highlighted",
- 'gi' => "insert at last pos",
- 'gI' => "insert at soft bol",
- 'gj' => "<down> screen",
- 'gJ' => "join leave spac<>ing",
- 'gk' => "<up> screen",
- 'gm' => "cen<>ter screen",
- 'gn' => "select next find",
- 'gN' => "select prev find",
- 'go' => ":goto (byte)",
- 'gp' => "paste still",
- 'gP' => "paste before still",
- 'gq' => "for<>mat",
- 'gQ' => "ex mode manual :",
- 'gr' => "virt. repl<>ace char",
- 'gR' => "virt. repl<>ace mode",
- 'gs' => "sleep\nGo to Sleep",
- 'gt' => "next tab\nGoto Tab",
- 'gT' => "tab back",
- 'gu' => "lower<>case",
- 'gU' => "up<>per<>case",
- 'gv' => "prev<>ious highl<>ight\nprecedinG Visual",
- 'gV' => "avoid resel<>ect<>ion",
- 'gw' => "for<>mat still",
- 'gx' => "Netrw<>BrowseX",
-
- "Z\e"=> "normal mode",
- 'ZQ' => " :q! (force)",
- 'ZZ' => " :wq (write)",
-
- 'z^' => "page above",
- 'z+' => "page below",
- 'z-' => "line at bottom bol\ndon't (-) see any further",
- 'z=' => "sug<>gest spell<>ing",
- 'z.' => "line at center bol",
- "z\e"=> "normal mode",
-
- 'za' => "toggle fold",
- 'zA' => "toggle fold rec<>urs<>ive<>ly",
- 'zb' => "line at bot. bol",
- 'zc' => "close fold",
- 'zC' => "close folds rec<>curs<>ive<>ly",
- 'zd' => "delete fold",
- 'zD' => "delete folds rec<>urs<>ive",
- 'ze' => "cursor at right side",
- 'zE' => "elimi<>nate f<>olds",
- 'zf' => "create fold",
- 'zF' => "fold lines",
- 'zg' => "add spell<>ing\nGood word",
- 'zG' => "temp spell<>ing",
- 'zh' => "scroll <left>",
- 'zH' => "scroll <left> half scr<>een",
- 'zi' => "toggle all folds",
- 'zj' => "next fold start",
- 'zk' => "prev fold end",
- 'zl' => "scroll <right>",
- 'zL' => "scroll <right> half scr<>een",
- 'z^m'=> "line at top bol",
- 'zm' => "fold more",
- 'zM' => "close all folds",
- 'zn' => "fold none",
- 'zN' => "fold norm<>al",
- 'zo' => "open fold",
- 'zO' => "open folds rec<>urs<>ive<>ly",
- 'zr' => "reduce folding",
- 'zR' => "open all folds",
- 'zs' => "cursor at left side",
- 'zt' => "line at top",
- 'zu' => "undo spell<>ing",
- 'zv' => "unfold cursor line",
- 'zw' => "add missp<>ell<>ing\nWrong word",
- 'zW' => "temp missp<>ell<>ing",
- 'zx' => "update folds",
- 'zX' => "re<>apply f<>olds",
- 'zz' => "line at center\nZee Zenter (with a funny accent)",
-
- "[`" => "previous lc mark",
- '[#' => "previous open #if<>/#else",
- '[(' => "previous open (",
- '[/' => "start of C com<>m<>ent",
- '[{' => "previous open {",
- '[[' => "section back<>ward<>s",
- "[\e"=> "normal mode",
- '[]' => qq'<span style="font-variant:small-caps">section</span> back<>ward<>s',
-
- '[c' => "start of change backw<>ards",
- '[d' => "define line",
- '[D' => "defin<>ition",
- '[^d'=> "to defin<>it<>ion",
- '[i' => "first occur<>renc<>e line",
- '[I' => "first occur<>renc<>e",
- '[^i'=> "to first occur<>renc<>e",
- '[m' => "start of funct<>ion",
- '[p' => "P reind<>ent<>ed",
- '[s' => "last missp<>ell<>ing",
- '[S' => "last bad word",
- '[z' => "start of open fold",
-
- "]`" => "next lc mark",
- ']#' => "next open #endif<>/#else",
- '])' => "next open )",
- ']/' => "end of C com<>m<>ent",
- '][' => qq'<span style="font-variant:small-caps">section</span> forw<>ard',
- "]\e"=> "normal mode",
- ']]' => "section forw<>ard",
- ']}' => "next open }",
-
- ']c' => "start of change forw<>ards",
- ']d' => "next define line",
- ']D' => "next define",
- ']^d'=> "to next define",
- ']i' => "next occur<>renc<>e line",
- ']I' => "next occur<>renc<>e",
- ']^i'=> "to occur<>renc<>e",
- ']m' => "end of funct<>ion",
- ']p' => "p reind<>ent<>ed",
- ']s' => "next missp<>ell<>ing",
- ']S' => "next bad word",
- ']z' => "end of open fold",
-
- '^w<' => "width decr<>ease",
- '^w>' => "width incr<>ease",
- '^w^' => "split, edit alt file",
- '^w_' => "set height",
- '^w+' => "height incr<>ease",
- '^w-' => "height decr<>ease",
- '^w=' => "same height",
- "^w\e"=> "normal mode",
- '^w]' => "split, to tag",
- '^w}' => "pre<>view tag",
- '^w|' => "set width",
-
- '^wb' => "go to bot<>tom",
- '^wc' => ":close",
- '^w^c'=> "abort",
- '^wd' => "split, to def<>inition",
- '^wf' => "split, file edit",
- '^wF' => "^wf, jump to line",
- '^wg' => "extra cmds",
- '^wh' => "go left",
- '^wH' => "move far left",
- '^wi' => "split, to decl of id<>ent<>ifier",
- '^wj' => "go down",
- '^wJ' => "move to bottom",
- '^wk' => "go up",
- '^wK' => "move to top",
- '^wl' => "go right",
- '^wL' => "move far right",
- '^wn' => "open new",
- '^wo' => ":only current",
- '^wp' => "go to prev<>ious",
- '^wP' => "go to pre<>view",
- '^wq' => ":quit current",
- '^wr' => "rotate down<>ward<>s",
- '^wR' => "rotate up<>ward<>s",
- '^ws' => "split horiz<>ont<>al<>ly",
- '^wt' => "go to top",
- '^wT' => "to tab",
- '^wv' => "split vert<>ic<>al<>ly",
- '^ww' => "go to next\nWrap around",
- '^wW' => "go above<>/left",
- '^wx' => "ex<>chan<>ge",
- '^wz' => "close pre<>view",
-
- "^wg\e"=> "normal mode",
- '^wg]' => "split, :ts<>elect",
- '^wg}' => ":ptj<>ump to tag",
- '^wg^]'=> "split, :tj<>ump",
- '^wgf' => "file in tab",
- '^wgF' => "^wgf, to line<>nr",
-
- 'v!' => "external filter",
- 'v:' => "cmd on range",
- 'v<' => "un<>indent",
- 'v=' => "re<>ind<>ent",
- 'v>' => "ind<>ent",
- 'v~' => "toggle case",
- "v\e"=> "normal mode",
- 'v^]'=> "jump to tag",
-
- 'va' => "ex<>tend area",
- 'vA' => "ap<>pend to block", # block
- 'v^a'=> "incr<>ement num<>bers",
- 'vc' => "repl<>ace area",
- 'vC' => "repl<>ace full lines", # like vS, but blocks are extended until eol
- 'v^c'=> "abort",
- 'vd' => "delete area",
- 'vD' => "delete lines",
- 'vg' => "extra cmds",
- 'v^g'=> "select mode",
- 'vi' => "extend inner a<>r<>ea",
- 'vI' => "insert to block", # block
- 'vJ' => "join lines",
- 'vK' => "help sel<>ect<>ion",
- 'vo' => "to other corner",
- 'vO' => "to other side",
- 'v^o'=> "visual once", # select
- 'vp' => "repl<>ace w/ paste",
- 'vP' => "repl<>ace w/ paste",
- 'vr' => "fill up w/ ch<>ar",
- 'vS' => "repl<>ace lines",
- 'vu' => "lower<>case",
- 'vU' => "upper<>case",
- 'vv' => "char<>wise",
- 'vV' => "line<>wise",
- 'v^v'=> "block<>wise",
- 'v^x'=> "decr<>ement num<>bers",
- 'vy' => "yank area",
- 'vY' => "yank lines",
-
- "vg\e"=> "visual mode",
- 'vg?' => "rot13 encode",
- 'vg^a'=> "seq. incr<>ement",
- 'vg^g'=> "count region info",
- 'vgJ' => "join literal<>ly",
- 'vgq' => "for<>mat",
- 'vgw' => "for<>mat still",
- 'vg^x'=> "seq. decr<>ement",
-
- "va'" => "quoted string",
- 'va<' => "<> block",
- 'va[' => "[] block",
- "va\e"=> "visual mode",
-
- 'vab' => "() block",
- 'vaB' => "{} Block",
- 'vap' => "para<>graph",
- 'vas' => "senten<>ce",
- 'vat' => "xml tag block",
- 'vaw' => "word",
- 'vaW' => '<span style="font-variant:small-caps">word</span>',
-
-# 'c^a' => "complete", #todo
-# 'c^b' => "bol",
-# 'c^d' => "complete", #todo
-# 'c^e' => "eol",
-# 'c^j' => "execute cmd",
-# 'c^l' => "complete", #todo
-# 'c^n' => "complete", #todo
-# 'c^p' => "complete", #todo
-# 'c^r' => \'i^r', # and then some...
-# ## "insert register",
-# 'c^y' => "selec<>tion to clip<>b<>oard",
-
- 'i^@' => "last insert",
- 'i^^' => "toggle :lmap usag<>e",
- "i\e" => "normal mode",
- 'i^]' => "abbrev<>iate",
- 'i^_' => "toggle lang<>uage",
-
- 'i^a' => "insert prev<>ious",
- 'i^b' => "former i^_",
- 'i^c' => "abort, no abbr",
- 'i^d' => "un<>ind<>ent",
- 'i^e' => "ins char below",
- 'i^f' => "set indent<>ation",
- 'i^g' => "extra cmds",
- 'i^h' => "back<>space",
- 'i^i' => "tab",
- 'i^j' => "enter",
- 'i^k' => "di<>graph\nKey code",
- 'i^l' => "<em>im</em> leave ins mode",
- 'i^m' => "enter",
- 'i^n' => "find next keyword",
- 'i^o' => "exec<>ute cmd",
- 'i^p' => "find prev keyword",
- 'i^r' => "insert reg<>ister",
- 'i^t' => "indent",
- 'i^u' => "delete line",
- 'i^v' => "literal or ch<>ar<>cod<>e\nVerbatim or by Value",
- 'i^w' => "delete word back",
- 'i^x' => "ex<>pand mode",
- 'i^y' => "ins char above",
- 'i^z' => ":sus<>pend in <em>im</em>",
-
- "i^g\e"=> "insert mode",
- 'i^gk' => "<up> start col<>umn",
- 'i^gj' => "<down> start col<>umn",
- 'i^gu' => "break undo seq<>uence",
- 'i^gU' => "keep undo seq<>uence",
- # other i^g keys (even esc) are not recognized
-
- "i^x\e" => "normal mode",
- 'i^x^]' => "tag comp<>l<>et<>e",
- 'i^x^d' => "def<>ine compl<>et<>e",
- 'i^x^e' => "window up",
- 'i^x^f' => "file comp<>l<>et<>e",
- 'i^x^i' => "ident comp<>l<>et<>e",
- 'i^x^k' => "dict comp<>l<>et<>e",
- 'i^x^l' => "line comp<>l<>et<>e",
- 'i^x^n' => "next comp<>l<>et<>e",
- 'i^x^o' => "omni comp<>l<>et<>e",
- 'i^x^p' => "prev comp<>l<>ete",
- 'i^x^s' => "spell sugg<>est",
- 'i^x^t' => "thes<>aur<>us compl<>et<>e",
- 'i^x^u' => "cus<>tom comp<>l<>et<>e",
- 'i^x^v' => "ex cmd compl<>et<>e",
- 'i^x^y' => "window down",
-
- # plugins
- 'gc' => "(un)<>com<>ment\ncommentary or tComment plugin",
- 'vgc' => "(un)<>com<>ment\ncommentary or tComment plugin",
- 'gl' => "align to left\nlion plugin, also good for easy-align",
- 'vgl' => "align to left\nlion plugin, also good for easy-align",
- 'gL' => "align to right\nlion plugin",
- 'vgL' => "align to right\nlion plugin",
- 'i^gs' => "sur<>round\nsurround plugin",
-
- # unimpaired
- '[a' => "prev<>ious file\nunimpaired map for :prev",
- ']a' => "next file\nunimpaired map for :n",
- '[A' => "first file\nunimpaired map for :rew",
- ']A' => "last file\nunimpaired map for :la",
- '[b' => "prev<>ious buffer\nunimpaired map for :bp",
- ']b' => "next buffer\nunimpaired map for :bn",
- '[B' => "first buffer\nunimpaired map for :br",
- ']B' => "last buffer\nunimpaired map for :bl",
- '[e' => "exchange line above\nunimpaired plugin",
- ']e' => "exchange line belo<>w\nunimpaired plugin",
- '[f' => "preced<>ing file alph<>abet<>ic<>al<>ly\nunimpaired plugin",
- ']f' => "next file alph<>abet<>ic<>al<>ly\nunimpaired plugin",
- '[l' => "previous loc<>at<>ion\nunimpaired map for :lp",
- ']l' => "next loc<>ation\nunimpaired map for :lne",
- '[L' => "first loc<>ation\nunimpaired map for :lr",
- ']L' => "last loc<>ation\nunimpaired map for :lla",
- '[^l'=> "next file in loc<>at<>ions\nunimpaired map for :lpf",
- ']^l'=> "file back in loc<>at<>ions\nunimpaired map for :lnf",
- '[n' => "previous conflict<>/hunk\nunimpaired plugin",
- ']n' => "next confl<>ict<>/hunk\nunimpaired plugin",
- '[o' => "enable option\nunimpaired plugin",
- ']o' => "disable option\nunimpaired plugin",
- 'yo' => "toggle option\nunimpaired plugin",
- '[q' => "previous quickfix\nunimpaired map for :cp",
- ']q' => "next quickfix error\nunimpaired map for :cn",
- '[Q' => "first quickfix\nunimpaired map for :cr",
- ']Q' => "last quickfix error\nunimpaired map for :cla",
- '[^q'=> "quickfix file b<>ack\nunimpaired map for :cpf",
- ']^q'=> "next file in q<>uick<>f<>ix\nunimpaired map for :cnf",
- '[t' => "previous tag\nunimpaired map for :tp",
- ']t' => "next tag\nunimpaired map for :tn",
- '[T' => "first tag\nunimpaired map for :tr",
- ']T' => "last tag\nunimpaired map for :tl",
- '[u' => "url encode\nunimpaired plugin",
- ']u' => "url decode\nunimpaired plugin",
- '[x' => "xml encode\nunimpaired plugin",
- ']x' => "xml decode\nunimpaired plugin",
- '[y' => "escape c str<>ing\nunimpaired plugin",
- ']y' => "unescap<>e c str<>ing\nunimpaired plugin",
-
- (map { ("d$_" => "delete to <alias>$_") } qw( g z [ ] )),
- 'dW' => 'delete <span style="font-variant:small-caps">word</span>',
- 'db' => 'delete <left> word',
- 'dB' => 'delete <left> <span style="font-variant:small-caps">word</span>',
- 'de' => 'delete word e<>nd',
- 'dE' => 'delete <span style="font-variant:small-caps">word</span> e<>nd',
- 'df' => 'delete to char<>acter',
- 'dF' => 'delete <left> to char<>acter',
- 'dG' => 'delete to line<>/eof',
- 'dH' => 'delete to top',
- 'dj' => 'delete <down> line',
- 'dk' => 'delete <up> line',
- 'dL' => 'delete to bottom',
- 'dM' => 'delete to middle',
- 'dn' => 'delete to next res<>ult',
- 'dN' => 'delete to prev res<>ult',
- 'dt' => 'delete upto ch<>ar<>acter',
- 'dT' => 'delete <left> upto ch<>ar<>acter',
- 'dw' => 'delete word',
- 'd,' => 'delete to prev ch<>ar<>acter',
- 'd;' => 'delete to next ch<>ar<>acter',
- 'd/' => 'delete to res<>ult',
- 'd?' => 'delete <left> to res<>ult',
- 'd`' => 'delete to mark',
- "d'" => 'delete lines to m<>ark',
- 'd*' => 'delete to find',
- 'd#' => 'delete <left> to find',
- 'd%' => 'delete to line pct',
- 'd^' => 'delete to soft bol',
- 'd0' => 'delete to bol',
- 'd|' => 'delete to col<>umn',
- 'd{' => 'delete <left> par<>agr<>aph',
- 'd}' => 'delete rest of p<>ar<>agr<>aph',
- 'd(' => 'delete <left> senten<>ce',
- 'd)' => 'delete rest of s<>en<>ten<>ce',
- 'da' => 'delete area',
- 'di' => 'delete inner',
- 'dd' => 'delete line',
- 'do' => 'diff obtain',
- 'dp' => 'diff put',
- 'ds' => 'delete surr<>oun<>d<>ing',
-},
-
mode => {
'' => "normal mode",
g => "extended commands (g)",
def => {
'' => {
- '~' => "g4 undo",
- '!' => "g4 argm undo modec",
- '@' => "g4 arg undo",
- '#' => "g2 v6",
- '$' => "g2",
- '%' => "g2",
- '^' => "g2",
- '&' => "g4 undo",
- '*' => "g2 v6",
- '(' => 'g2',
- ')' => 'g2',
- '_' => "g2",
- '+' => "g2",
- '`' => "g2 arg",
- '0' => "g2",
- '^^'=> "g4",
- '-' => "g2",
- '=' => 'g4 argm undo',
- '?' => "g2 arg modec",
- ';' => "g2",
- ':' => "g4 modec",
- "'" => "g2 arg",
- '"' => 'g4 arg',
- '\\' => 'g9 arg',
- '^\\' => "g7 arg",
- ',' => "g2",
- '<' => "g4 argm undo",
- '.' => "g4 undo",
- '>' => "g4 argm undo",
- '/' => "g2 arg modec",
- '[' => "g9 arg mode[",
- '{' => "g2",
- ']' => "g9 arg mode]",
- '}' => "g2",
- '^]'=> "g3",
- '|' => "g2",
-
- 'a' => "g6 undo modei",
- 'A' => "g6 undo modei",
- '^a'=> "g4 undo",
- 'b' => "g2",
- 'B' => "g2",
- '^b'=> "g3",
- 'c' => "g6 argm undo modei",
- 'C' => "g6 undo modei",
- '^c'=> "g4",
- 'd' => "g4 argm undo moded",
- 'D' => "g4 undo",
- '^d'=> "g3",
- 'e' => "g2",
- 'E' => "g2",
- '^e'=> "g3",
- 'f' => "g2 arg",
- 'F' => "g2 arg",
- '^f'=> "g3",
- 'g' => "g9 arg modeg",
- 'G' => "g2",
- '^g'=> "g1",
- 'h' => "g2",
- 'H' => "g2",
- '^h'=> "=h",
- 'i' => "g6 undo modei",
- 'I' => "g6 undo modei",
- '^i'=> "g2 v6",
- 'j' => "g2",
- 'J' => "g4 undo",
- '^j'=> "=j",
- 'k' => "g2",
- 'K' => "g4",
- 'l' => "g2",
- 'L' => "g2",
- '^l'=> "g1",
- 'm' => "g4 arg",
- 'M' => "g2",
- '^m'=> "=+",
- 'n' => "g2",
- 'N' => "g2",
- '^n'=> "=j",
- 'o' => "g6 undo modei",
- 'O' => "g6 undo modei",
- '^o'=> "g2 v6",
- 'p' => "g4 undo",
- 'P' => "g4 undo",
- '^p'=> "=k",
- 'q' => "g7 arg",
- 'Q' => "g7",
- '^q'=> "g1", # or ^v
- 'r' => "g4 arg undo",
- 'R' => "g6 undo modei",
- '^r'=> "g4 undo v6",
- 's' => "g6 undo modei",
- 'S' => "g6 undo modei",
- '^s'=> "g1",
- 't' => "g2 arg",
- 'T' => "g2 arg",
- '^t'=> "g3",
- 'u' => "g4 undo",
- 'U' => "g4 undo",
- '^u'=> "g3",
- 'v' => "g8 modev",
- 'V' => "g8 modev",
- '^v'=> "g8 modev v6",
- 'w' => "g2",
- 'W' => "g2",
- '^w'=> "g9 arg mode^w",
- 'x' => "g4 undo",
- 'X' => "g4 undo",
- '^x'=> "g4 undo",
- 'y' => "g4 argm",
- 'Y' => "g4",
- '^y'=> "g3",
- 'z' => "g9 arg modez",
- 'Z' => "g9 arg modeZ",
- '^z'=> "g1",
+ '~' => ["g4 undo", "case toggle"],
+ '!' => ["g4 argm undo modec", "filt<>er lines"],
+ '@' => ["g4 arg undo", "play macro"],
+ '#' => ["g2 v6", "rev. find word"],
+ '$' => ["g2", "eol"],
+ '%' => ["g2", "goto match"],
+ '^' => ["g2", '"soft" bol'],
+ '&' => ["g4 undo", ":s rep<>eat"],
+ '*' => ["g2 v6", "find word"],
+ '(' => ['g2', "begin senten<>ce"],
+ ')' => ['g2', "end senten<>ce"],
+ '_' => ["g2", '"soft" bol down'],
+ '+' => ["g2", "next line"],
+ '`' => ["g2 arg", "goto mark"],
+ '0' => ["g2", '"hard" bol'],
+ '^^'=> ["g4", "edit alt. file"],
+ '-' => ["g2", "prev line"],
+ '=' => ['g4 argm undo', "re<>ind<>ent"],
+ '?' => ["g2 arg modec", "find rev."],
+ ';' => ["g2", "repeat t/f/T/F"],
+ ':' => ["g4 modec", "ex cmd line"],
+ "'" => ["g2 arg", "goto mark bol"],
+ '"' => ['g4 arg', "use reg<>ister"],
+ '\\' => ['g9 arg', "reser<>ved"],
+ '^\\' => ["g7 arg", "to mode/<>ext<>ens<>ion<>s"],
+ ',' => ["g2", "reverse t/T/f/F"],
+ '<' => ["g4 argm undo", "un<>ind<>ent"],
+ '.' => ["g4 undo", "repeat last cmd"],
+ '>' => ["g4 argm undo", "ind<>ent"],
+ '/' => ["g2 arg modec", "find"],
+ '[' => ["g9 arg mode[", "move back<>ward<>s"],
+ '{' => ["g2", "begin parag."],
+ ']' => ["g9 arg mode]", "move forw<>ard"],
+ '}' => ["g2", "end parag."],
+ '^]'=> ["g3", "go to tag"],
+ '|' => ["g2", "goto (1st) col"],
+
+ 'a' => ["g6 undo modei", "app<>end"],
+ 'A' => ["g6 undo modei", "app<>end to eol"],
+ '^a'=> ["g4 undo", "incr<>ement\nAdd one"],
+ 'b' => ["g2", "prev word\nBack"],
+ 'B' => ["g2", 'prev <span style="font-variant:small-caps">word</span>'],
+ '^b'=> ["g3", "page up"],
+ 'c' => ["g6 argm undo modei", "chan<>ge"],
+ 'C' => ["g6 undo modei", "chan<>ge to eol"],
+ '^c'=> ["g4", "abort"],
+ 'd' => ["g4 argm undo moded", "del<>ete"],
+ 'D' => ["g4 undo", "delete to eol"],
+ '^d'=> ["g3", "scroll down"],
+ 'e' => ["g2", "end word"],
+ 'E' => ["g2", 'end <span style="font-variant:small-caps">word</span>'],
+ '^e'=> ["g3", "window down\nExtra line"],
+ 'f' => ["g2 arg", "fwd to char"],
+ 'F' => ["g2 arg", "back<>wd to char"],
+ '^f'=> ["g3", "page down\npage Forward"],
+ 'g' => ["g9 arg modeg", "extra cmds"],
+ 'G' => ["g2", "eof/<>goto ln"],
+ '^g'=> ["g1", ":file (info)"],
+ 'h' => ["g2", "<left>"],
+ 'H' => ["g2", "screen top\nHome row"],
+ '^h'=> \'h',
+ 'i' => ["g6 undo modei", "insert mode"],
+ 'I' => ["g6 undo modei", "insert at bol"],
+ '^i'=> ["g2 v6", "jump to newer\nIncrease position"],
+ 'j' => ["g2", "<down>"],
+ 'J' => ["g4 undo", "join lines"],
+ '^j'=> \'j',
+ 'k' => ["g2", "<up>"],
+ 'K' => ["g4", "help\nlooKup Keyword"],
+ 'l' => ["g2", "<right>"],
+ 'L' => ["g2", "screen bottom\nLowermost Line"],
+ '^l'=> ["g1", "redraw"],
+ 'm' => ["g4 arg", "set mark"],
+ 'M' => ["g2", "screen mid<>dle"],
+ '^m'=> \'+',
+ 'n' => ["g2", "next find"],
+ 'N' => ["g2", "prev find"],
+ '^n'=> \'j',
+ 'o' => ["g6 undo modei", "line below\nOpen"],
+ 'O' => ["g6 undo modei", "line above"],
+ '^o'=> ["g2 v6", "jump to older"],
+ 'p' => ["g4 undo", "paste after"],
+ 'P' => ["g4 undo", "paste before"],
+ '^p'=> \'k',
+ 'q' => ["g7 arg", "rec<>ord macro\nQueue seQuence"],
+ 'Q' => ["g7", "ex mode"],
+ '^q'=> ["g1", "(xon)\nQome back"], # or ^v
+ 'r' => ["g4 arg undo", "repl<>ace char"],
+ 'R' => ["g6 undo modei", "repl<>ace mode"],
+ '^r'=> ["g4 undo v6", "redo"],
+ 's' => ["g6 undo modei", "subst char"],
+ 'S' => ["g6 undo modei", "subst line"],
+ '^s'=> ["g1", "(xoff)\nStop"],
+ 't' => ["g2 arg", "till char"],
+ 'T' => ["g2 arg", "back till char"],
+ '^t'=> ["g3", "back tag"], # backtrag :P
+ 'u' => ["g4 undo", "undo"],
+ 'U' => ["g4 undo", "undo line"],
+ '^u'=> ["g3", "scroll up"],
+ 'v' => ["g8 modev", "visual mode"],
+ 'V' => ["g8 modev", "visual lines"],
+ '^v'=> ["g8 modev v6", "visual block"],
+ 'w' => ["g2", "next word"],
+ 'W' => ["g2", 'next <span style="font-variant:small-caps">word</span>'],
+ '^w'=> ["g9 arg mode^w", "win<>dow cmds"],
+ 'x' => ["g4 undo", "delete char"],
+ 'X' => ["g4 undo", "back<>space"],
+ '^x'=> ["g4 undo", "subs<>tract"],
+ 'y' => ["g4 argm", "yank\n(copy)"],
+ 'Y' => ["g4", "yank line"],
+ '^y'=> ["g3", "window up\nYield"],
+ 'z' => ["g9 arg modez", "extra cmds"],
+ 'Z' => ["g9 arg modeZ", "quit"],
+ '^z'=> ["g1", ":sus<>pend\nzzz (as in sleep)"],
}, # normal mode
g => {
lead => "g",
- "\e"=> "g7 mode",
-
- '~' => "g4 argm v6",
- '@' => "g4 v7",
- '#' => "g2 v6",
- '$' => "g2",
- '^' => "g2 v6",
- '&' => "g4",
- '*' => "g2 v6",
- '_' => "g2 v6",
- '+' => "g4 v7",
- '`' => "g2 v6 arg",
- '8' => "g1",
- '0' => "g2 v6",
- '-' => "g4 v7",
- '^['=> "g7 mode",
- ']' => "g3",
- '^]'=> "g3",
- ';' => "g2",
- "'" => "g2 v6 arg",
- '<' => "g4 v7",
- '?' => "g4 argm v6",
- ',' => "g2",
-
- 'a' => "g1",
- '^a'=> "g1",
- 'c' => 'g4 argm xcommentary',
- 'd' => "g2 v6",
- 'D' => "g2 v6",
- 'e' => "g2",
- 'E' => "g2",
- 'f' => "g4 v6",
- 'F' => "g4 v7",
- 'g' => "g2",
- '^g'=> "g1 vim6",
- 'h' => "g8 modev",
- 'H' => "g8 modev",
- '^h'=> "g8 modev v6",
- 'i' => "g6 undo modei",
- 'I' => "g6 undo modei",
- 'j' => "g2 v6",
- 'J' => "g4",
- 'k' => "g2 v6",
- 'l' => 'g3 argm arg xlion',
- 'L' => 'g3 argm arg xlion',
- 'm' => "g2 v6",
- 'n' => "g8 v7 modev",
- 'N' => "g8 v7 modev",
- 'o' => "g2",
- 'p' => "g4 undo",
- 'P' => "g4",
- 'q' => "g4 argm",
- 'Q' => "g7 v6",
- 'r' => "g4 arg",
- 'R' => "g6 undo modei",
- 's' => "g1 v6",
- 't' => "g3 v7",
- 'T' => "g3 v7",
- 'u' => "g4 argm v6", # XXX undo?
- 'U' => "g4 undo argm v6",
- 'v' => 'g8 modev',
- 'V' => "g4",
- 'w' => "g4 argm v7",
- 'x' => "g4 v7 ext",
+ "\e"=> ["g7 mode", "normal mode"],
+
+ '~' => ["g4 argm v6", "case toggl<>e"],
+ '@' => ["g4 v7", "oper<>at<>or<>func"],
+ '#' => ["g2 v6", "rev. find string"],
+ '$' => ["g2", "virt<>ual eol"],
+ '^' => ["g2 v6", qq'"soft" bol v<>irt<>ual'],
+ '&' => ["g4", ":s rep<>eat glob<>al<>ly\nGlobal substitute"],
+ '*' => ["g2 v6", "find string"],
+ '_' => ["g2 v6", qq'"soft" eol'],
+ '+' => ["g4 v7", "later undo"],
+ '`' => ["g2 v6 arg", "to mark keepj<>umps"],
+ '8' => ["g1", "char hex val<>ue<>s"],
+ '0' => ["g2 v6", "virtual bol"],
+ '-' => ["g4 v7", "earlier undo"],
+ '^['=> ["g7 mode"],
+ ']' => ["g3", "go to tselect"],
+ '^]'=> ["g3", "go to tjump"],
+ ';' => ["g2", "to prev change pos"],
+ "'" => ["g2 v6 arg", "to mark keepj<>umps"],
+ '<' => ["g4 v7", "see prev cmd output"],
+ '?' => ["g4 argm v6", "rot13 encode"],
+ ',' => ["g2", "to next change pos"],
+
+ 'a' => ["g1", "char value\nGet Ascii value"],
+ '^a'=> ["g1", "mem usage stats"],
+ 'd' => ["g2 v6", "local declar<>ation"],
+ 'D' => ["g2 v6", "global declar<>ation"],
+ 'e' => ["g2", "back to word end"],
+ 'E' => ["g2", qq'back to <span style="font-variant:small-caps">word</span> end'],
+ 'f' => ["g4 v6", "edit file at cur<>sor\nGoto File"],
+ 'F' => ["g4 v7", "edit file + jump"],
+ 'g' => ["g2", "first line"],
+ '^g'=> ["g1 vim6", "cur<>sor pos info"],
+ 'h' => ["g8 modev", "select mode\nGet Highlighted"],
+ 'H' => ["g8 modev", "select lines\nGet Highlighted"],
+ '^h'=> ["g8 modev v6", "select block\nGet Highlighted"],
+ 'i' => ["g6 undo modei", "insert at last pos"],
+ 'I' => ["g6 undo modei", "insert at soft bol"],
+ 'j' => ["g2 v6", "<down> screen"],
+ 'J' => ["g4", "join leave spac<>ing"],
+ 'k' => ["g2 v6", "<up> screen"],
+ 'm' => ["g2 v6", "cen<>ter screen"],
+ 'n' => ["g8 v7 modev", "select next find"],
+ 'N' => ["g8 v7 modev", "select prev find"],
+ 'o' => ["g2", ":goto (byte)"],
+ 'p' => ["g4 undo", "paste still"],
+ 'P' => ["g4", "paste before still"],
+ 'q' => ["g4 argm", "for<>mat"],
+ 'Q' => ["g7 v6", "ex mode manual :"],
+ 'r' => ["g4 arg", "virt. repl<>ace char"],
+ 'R' => ["g6 undo modei", "virt. repl<>ace mode"],
+ 's' => ["g1 v6", "sleep\nGo to Sleep"],
+ 't' => ["g3 v7", "next tab\nGoto Tab"],
+ 'T' => ["g3 v7", "tab back"],
+ 'u' => ["g4 argm v6", "lower<>case"], # XXX undo?
+ 'U' => ["g4 undo argm v6", "up<>per<>case"],
+ 'v' => ['g8 modev', "prev<>ious highl<>ight\nprecedinG Visual"],
+ 'V' => ["g4", "avoid resel<>ect<>ion"],
+ 'w' => ["g4 argm v7", "for<>mat still"],
+ 'x' => ["g4 v7 ext", "Netrw<>BrowseX"],
+
+ # plugins
+ 'c' => ['g4 argm xcommentary', "(un)<>com<>ment\ncommentary or tComment plugin"],
+ 'l' => ['g3 argm arg xlion', "align to left\nlion plugin, also good for easy-align"],
+ 'L' => ['g3 argm arg xlion', "align to right\nlion plugin"],
}, # mode g
Z => {
lead => "Z",
- "\e"=> "g7 mode",
- '^['=> "=\e",
+ "\e"=> ["g7 mode", "normal mode"],
+ '^['=> \"Z\e",
- 'Q' => "g4 v6",
- 'Z' => "g4",
+ 'Q' => ["g4 v6", " :q! (force)"],
+ 'Z' => ["g4", " :wq (write)"],
}, # mode Z
z => {
lead => "z",
- "\e"=> "g7 mode",
-
- '^' => "g3",
- '+' => "g3",
- '-' => "g3",
- '=' => "g4 v7",
- '.' => "g3",
- '^['=> "=\e",
-
- 'a' => "g4 v6 folding",
- 'A' => "g4 v6 folding",
- 'b' => "g3",
- 'c' => "g4 v6 folding",
- 'C' => "g4 v6 folding",
- 'd' => "g4 v6 folding",
- 'D' => "g4 v6 folding",
- 'e' => "g3",
- 'E' => "g4 v6 folding",
- 'f' => "g4 argm v6 folding",
- 'F' => "g4 v6 folding",
- 'g' => "g4 v7",
- 'G' => "g4 v7",
- 'h' => "g3",
- 'H' => "g3",
- 'i' => "g4 v6 folding",
- 'j' => "g2 v6 folding",
- 'k' => "g2 v6 folding",
- 'l' => "g3",
- 'L' => "g3",
- '^m'=> "g3",
- 'm' => "g4 v6 folding",
- 'M' => "g4 v6 folding",
- 'n' => "g4 v6 folding",
- 'N' => "g4 v6 folding",
- 'o' => "g4 v6 folding",
- 'O' => "g4 v6 folding",
- 'r' => "g4 v6 folding",
- 'R' => "g4 v6 folding",
- 's' => "g3",
- 't' => "g3",
- 'u' => "g4 arg v7",
- 'v' => "g4 v6 folding",
- 'w' => "g4 v7",
- 'W' => "g4 v7",
- 'x' => "g4 v6 folding",
- 'X' => "g4 v6 folding",
- 'z' => "g3",
+ "\e"=> ["g7 mode", "normal mode"],
+
+ '^' => ["g3", "page above"],
+ '+' => ["g3", "page below"],
+ '-' => ["g3", "line at bottom bol\ndon't (-) see any further"],
+ '=' => ["g4 v7", "sug<>gest spell<>ing"],
+ '.' => ["g3", "line at center bol"],
+ '^['=> \"z\e",
+
+ 'a' => ["g4 v6 folding", "toggle fold"],
+ 'A' => ["g4 v6 folding", "toggle fold rec<>urs<>ive<>ly"],
+ 'b' => ["g3", "line at bot. bol"],
+ 'c' => ["g4 v6 folding", "close fold"],
+ 'C' => ["g4 v6 folding", "close folds rec<>curs<>ive<>ly"],
+ 'd' => ["g4 v6 folding", "delete fold"],
+ 'D' => ["g4 v6 folding", "delete folds rec<>urs<>ive"],
+ 'e' => ["g3", "cursor at right side"],
+ 'E' => ["g4 v6 folding", "elimi<>nate f<>olds"],
+ 'f' => ["g4 argm v6 folding", "create fold"],
+ 'F' => ["g4 v6 folding", "fold lines"],
+ 'g' => ["g4 v7", "add spell<>ing\nGood word"],
+ 'G' => ["g4 v7", "temp spell<>ing"],
+ 'h' => ["g3", "scroll <left>"],
+ 'H' => ["g3", "scroll <left> half scr<>een"],
+ 'i' => ["g4 v6 folding", "toggle all folds"],
+ 'j' => ["g2 v6 folding", "next fold start"],
+ 'k' => ["g2 v6 folding", "prev fold end"],
+ 'l' => ["g3", "scroll <right>"],
+ 'L' => ["g3", "scroll <right> half scr<>een"],
+ '^m'=> ["g3", "line at top bol"],
+ 'm' => ["g4 v6 folding", "fold more"],
+ 'M' => ["g4 v6 folding", "close all folds"],
+ 'n' => ["g4 v6 folding", "fold none"],
+ 'N' => ["g4 v6 folding", "fold norm<>al"],
+ 'o' => ["g4 v6 folding", "open fold"],
+ 'O' => ["g4 v6 folding", "open folds rec<>urs<>ive<>ly"],
+ 'r' => ["g4 v6 folding", "reduce folding"],
+ 'R' => ["g4 v6 folding", "open all folds"],
+ 's' => ["g3", "cursor at left side"],
+ 't' => ["g3", "line at top"],
+ 'u' => ["g4 arg v7", "undo spell<>ing"],
+ 'v' => ["g4 v6 folding", "unfold cursor line"],
+ 'w' => ["g4 v7", "add missp<>ell<>ing\nWrong word"],
+ 'W' => ["g4 v7", "temp missp<>ell<>ing"],
+ 'x' => ["g4 v6 folding", "update folds"],
+ 'X' => ["g4 v6 folding", "re<>apply f<>olds"],
+ 'z' => ["g3", "line at center\nZee Zenter (with a funny accent)"],
}, # mode z
'[' => {
lead => "[",
- "\e"=> "g7 mode",
-
- "`" => "g2 v6",
- '#' => "g2",
- '(' => "g2",
- '*' => "=[/",
- '/' => "g2",
- "'" => "=0[`^ g2 v6",
- '{' => "g2",
- '[' => "g2",
- '^['=> "=\e",
- ']' => "g2",
-
- 'c' => "g2",
- 'd' => "g1",
- 'D' => "g4",
- '^d'=> "g3",
- 'f' => "=gf", # deprecated
- 'i' => 'g1',
- 'I' => 'g4',
- '^i'=> 'g3',
- 'm' => "g2",
- 'p' => "g4",
- 'P' => "=[p",
- 's' => "g3 v7",
- 'S' => "g3 v7",
- 'z' => "g2 v6 folding",
-
- 'a' => "g3 xunimpaired",
- 'A' => "g3 xunimpaired",
- 'b' => "g3 xunimpaired",
- 'B' => "g3 xunimpaired",
- 'e' => "g4 xunimpaired",
- 'l' => "g3 xunimpaired",
- 'L' => "g3 xunimpaired",
- '^l'=> "g3 xunimpaired",
- '^l'=> "g3 xunimpaired",
- 'f' => "g3 xunimpaired", # overrides native alias
- 'n' => "g3 xunimpaired",
- 'o' => "g9 arg xunimpaired",
- 'q' => "g3 xunimpaired",
- 'Q' => "g3 xunimpaired",
- '^q'=> "g3 xunimpaired",
- 't' => "g3 xunimpaired",
- 'T' => "g3 xunimpaired",
- 'u' => "g4 argm xunimpaired",
- 'x' => "g4 argm xunimpaired",
- 'y' => "g4 argm xunimpaired",
- ' ' => "g4 xunimpaired",
+ "\e"=> ["g7 mode", "normal mode"],
+
+ '`' => ["g2 v6", "previous lc mark"],
+ '#' => ["g2", "previous open #if<>/#else"],
+ '(' => ["g2", "previous open ("],
+ '*' => \'[/',
+ '/' => ["g2", "start of C com<>m<>ent"],
+ "'" => ["g2 v6", \"0[`^"],
+ '{' => ["g2", => "previous open {"],
+ '[' => ["g2", "section back<>ward<>s"],
+ '^['=> \"[\e",
+ ']' => ["g2", qq'<span style="font-variant:small-caps">section</span> back<>ward<>s'],
+
+ 'c' => ["g2", "start of change backw<>ards"],
+ 'd' => ["g1", "define line"],
+ 'D' => ["g4", "defin<>ition"],
+ '^d'=> ["g3", "to defin<>it<>ion"],
+ 'i' => ['g1', "first occur<>renc<>e line"],
+ 'I' => ['g4', "first occur<>renc<>e"],
+ '^i'=> ['g3', "to first occur<>renc<>e"],
+ 'm' => ["g2", "start of funct<>ion"],
+ 'p' => ["g4", "P reind<>ent<>ed"],
+ 'P' => \"[p",
+ 's' => ["g3 v7", "last missp<>ell<>ing"],
+ 'S' => ["g3 v7", "last bad word"],
+ 'z' => ["g2 v6 folding", "start of open fold"],
+
+ # unimpaired
+ 'a' => ["g3 xunimpaired", "prev<>ious file\nunimpaired map for :prev"],
+ 'A' => ["g3 xunimpaired", "first file\nunimpaired map for :rew"],
+ 'b' => ["g3 xunimpaired", "prev<>ious buffer\nunimpaired map for :bp"],
+ 'B' => ["g3 xunimpaired", "first buffer\nunimpaired map for :br"],
+ 'e' => ["g4 xunimpaired", "exchange line above\nunimpaired plugin"],
+ 'f' => \'gf', # deprecated
+ 'f' => ["g3 xunimpaired", "preced<>ing file alph<>abet<>ic<>al<>ly\nunimpaired plugin"], # overrides native alias
+ 'l' => ["g3 xunimpaired", "previous loc<>at<>ion\nunimpaired map for :lp"],
+ 'L' => ["g3 xunimpaired", "first loc<>ation\nunimpaired map for :lr"],
+ '^l'=> ["g3 xunimpaired", "next file in loc<>at<>ions\nunimpaired map for :lpf"],
+ 'n' => ["g3 xunimpaired", "previous conflict<>/hunk\nunimpaired plugin"],
+ 'o' => ["g9 arg xunimpaired", "enable option\nunimpaired plugin"],
+ #'p' => ["g4 xunimpaired", "linewise paste before"],
+ 'q' => ["g3 xunimpaired", "previous quickfix\nunimpaired map for :cp"],
+ 'Q' => ["g3 xunimpaired", "first quickfix\nunimpaired map for :cr"],
+ '^q'=> ["g3 xunimpaired", "quickfix file b<>ack\nunimpaired map for :cpf"],
+ 't' => ["g3 xunimpaired", "previous tag\nunimpaired map for :tp"],
+ 'T' => ["g3 xunimpaired", "first tag\nunimpaired map for :tr"],
+ 'u' => ["g4 argm xunimpaired", "url encode\nunimpaired plugin"],
+ 'x' => ["g4 argm xunimpaired", "xml encode\nunimpaired plugin"],
+ 'y' => ["g4 argm xunimpaired", "escape c str<>ing\nunimpaired plugin"],
+ ' ' => ["g4 xunimpaired", 'prepend blank l<>in<>e<>s'],
}, # mode [
']' => {
lead => "]",
- "\e"=> "g7 mode",
-
- "`" => "g2 v6",
- '#' => "g2",
- ')' => "g2",
- '*' => "=]/",
- "'" => '=$]`^ g2 v6',
- '/' => "g2",
- '[' => "g2",
- '^['=> "=\e",
- ']' => "g2",
- '}' => "g2",
-
- 'c' => "g2",
- 'd' => "g1",
- 'D' => "g4",
- '^d'=> "g3",
- 'f' => "=gf", # deprecated
- 'i' => "g1",
- 'I' => "g4",
- '^i'=> "g3",
- 'm' => "g2",
- 'p' => "g4",
- 'P' => "=[p",
- 's' => "g3 v7",
- 'S' => "g3 v7",
- 'z' => "g2 v6 folding",
-
- 'a' => "g3 xunimpaired",
- 'A' => "g3 xunimpaired",
- 'b' => "g3 xunimpaired",
- 'B' => "g3 xunimpaired",
- 'e' => "g4 xunimpaired",
- 'l' => "g3 xunimpaired",
- 'L' => "g3 xunimpaired",
- '^l'=> "g3 xunimpaired",
- '^l'=> "g3 xunimpaired",
- 'f' => "g3 xunimpaired", # overrides native alias
- 'n' => "g3 xunimpaired",
- 'o' => "g9 arg xunimpaired",
- 'q' => "g3 xunimpaired",
- 'Q' => "g3 xunimpaired",
- '^q'=> "g3 xunimpaired",
- 't' => "g3 xunimpaired",
- 'T' => "g3 xunimpaired",
- 'u' => "g4 argm xunimpaired",
- 'x' => "g4 argm xunimpaired",
- 'y' => "g4 argm xunimpaired",
- ' ' => "g4 xunimpaired",
+ "\e"=> ["g7 mode", "normal mode"],
+
+ '`' => ["g2 v6", "next lc mark"],
+ '#' => ["g2", "next open #endif<>/#else"],
+ ')' => ["g2", "next open )"],
+ '*' => \']/',
+ "'" => ["g2 v6", \'$]`^'],
+ '/' => ["g2", "end of C com<>m<>ent"],
+ '[' => ["g2", qq'<span style="font-variant:small-caps">section</span> forw<>ard'],
+ '^['=> \"]\e",
+ ']' => ["g2", "section forw<>ard"],
+ '}' => ["g2", "next open }"],
+
+ 'c' => ["g2", "start of change forw<>ards"],
+ 'd' => ["g1", "next define line"],
+ 'D' => ["g4", "next define"],
+ '^d'=> ["g3", "to next define"],
+ 'f' => \'gf', # deprecated
+ 'i' => ["g1", "next occur<>renc<>e line"],
+ 'I' => ["g4", "next occur<>renc<>e"],
+ '^i'=> ["g3", "to occur<>renc<>e"],
+ 'm' => ["g2", "end of funct<>ion"],
+ 'p' => ["g4", "p reind<>ent<>ed"],
+ 'P' => \'[p',
+ 's' => ["g3 v7", "next missp<>ell<>ing"],
+ 'S' => ["g3 v7", "next bad word"],
+ 'z' => ["g2 v6 folding", "end of open fold"],
+
+ # unimpaired
+ 'a' => ["g3 xunimpaired", "next file\nunimpaired map for :n"],
+ 'A' => ["g3 xunimpaired", "last file\nunimpaired map for :la"],
+ 'b' => ["g3 xunimpaired", "next buffer\nunimpaired map for :bn"],
+ 'B' => ["g3 xunimpaired", "last buffer\nunimpaired map for :bl"],
+ 'e' => ["g4 xunimpaired", "exchange line belo<>w\nunimpaired plugin"],
+ 'f' => ["g3 xunimpaired", "next file alph<>abet<>ic<>al<>ly\nunimpaired plugin"], # overrides native alias
+ 'l' => ["g3 xunimpaired", "next loc<>ation\nunimpaired map for :lne"],
+ 'L' => ["g3 xunimpaired", "last loc<>ation\nunimpaired map for :lla"],
+ '^l'=> ["g3 xunimpaired", "file back in loc<>at<>ions\nunimpaired map for :lnf"],
+ 'n' => ["g3 xunimpaired", "next confl<>ict<>/hunk\nunimpaired plugin"],
+ 'o' => ["g9 arg xunimpaired", "disable option\nunimpaired plugin"],
+ 'q' => ["g3 xunimpaired", "next quickfix error\nunimpaired map for :cn"],
+ 'Q' => ["g3 xunimpaired", "last quickfix error\nunimpaired map for :cla"],
+ '^q'=> ["g3 xunimpaired", "next file in q<>uick<>f<>ix\nunimpaired map for :cnf"],
+ 't' => ["g3 xunimpaired", "next tag\nunimpaired map for :tn"],
+ 'T' => ["g3 xunimpaired", "last tag\nunimpaired map for :tl"],
+ 'u' => ["g4 argm xunimpaired", "url decode\nunimpaired plugin"],
+ 'x' => ["g4 argm xunimpaired", "xml decode\nunimpaired plugin"],
+ 'y' => ["g4 argm xunimpaired", "unescap<>e c str<>ing\nunimpaired plugin"],
+ ' ' => ["g4 xunimpaired", 'add blank l<>in<>e<>s bel<>ow'],
}, # mode ]
'^w' => {
lead => "ŵ",
- "\e"=> "g7 mode",
-
- '<' => "g3",
- '>' => "g3",
- '^' => "g4",
- '_' => "g3",
- '+' => "g3",
- '-' => "g3",
- '=' => "g3",
- '^['=> "=\e",
- ']' => "g3",
- '}' => "g3",
- '|' => "g3",
-
- 'b' => "g3",
- 'c' => "g3",
- '^c'=> "g7 mode",
- 'd' => "g3",
- 'f' => "g4",
- 'F' => "g4 v7",
- 'g' => "g9 arg mode^wg",
- 'h' => "g3",
- 'H' => "g3",
- 'i' => "g3",
- 'j' => "g3",
- 'J' => "g3",
- 'k' => "g3",
- 'K' => "g3",
- 'l' => "g3",
- 'L' => "g3",
- 'n' => "g4",
- 'o' => "g3",
- 'p' => "g3",
- 'P' => "g3",
- 'q' => "g4",
- 'r' => "g3",
- 'R' => "g3",
- 's' => "g3",
- 'S' => "=^ws",
- 't' => "g3",
- 'T' => "g3 v7",
- 'v' => "g3",
- 'w' => "g3",
- 'W' => "g3",
- 'x' => "g3",
- 'z' => "g3",
+ "\e"=> ["g7 mode", "normal mode"],
+
+ '<' => ["g3", => "width decr<>ease"],
+ '>' => ["g3", => "width incr<>ease"],
+ '^' => ["g4", => "split, edit alt file"],
+ '_' => ["g3", => "set height"],
+ '+' => ["g3", => "height incr<>ease"],
+ '-' => ["g3", => "height decr<>ease"],
+ '=' => ["g3", => "same height"],
+ '^['=> \"^w\e",
+ ']' => ["g3", => "split, to tag"],
+ '}' => ["g3", => "pre<>view tag"],
+ '|' => ["g3", => "set width"],
+
+ 'b' => ["g3", => "go to bot<>tom"],
+ 'c' => ["g3", => ":close"],
+ '^c'=> ["g7 mode", "abort"],
+ 'd' => ["g3", => "split, to def<>inition"],
+ 'f' => ["g4", => "split, file edit"],
+ 'F' => ["g4 v7", => "^wf, jump to line"],
+ 'g' => ["g9 arg mode^wg", => "extra cmds"],
+ 'h' => ["g3", => "go left"],
+ 'H' => ["g3", => "move far left"],
+ 'i' => ["g3", => "split, to decl of id<>ent<>ifier"],
+ 'j' => ["g3", => "go down"],
+ 'J' => ["g3", => "move to bottom"],
+ 'k' => ["g3", => "go up"],
+ 'K' => ["g3", => "move to top"],
+ 'l' => ["g3", => "go right"],
+ 'L' => ["g3", => "move far right"],
+ 'n' => ["g4", => "open new"],
+ 'o' => ["g3", => ":only current"],
+ 'p' => ["g3", => "go to prev<>ious"],
+ 'P' => ["g3", => "go to pre<>view"],
+ 'q' => ["g4", => ":quit current"],
+ 'r' => ["g3", => "rotate down<>ward<>s"],
+ 'R' => ["g3", => "rotate up<>ward<>s"],
+ 's' => ["g3", => "split horiz<>ont<>al<>ly"],
+ 'S' => \'^ws',
+ 't' => ["g3", => "go to top"],
+ 'T' => ["g3 v7", => "to tab"],
+ 'v' => ["g3", => "split vert<>ic<>al<>ly"],
+ 'w' => ["g3", => "go to next\nWrap around"],
+ 'W' => ["g3", => "go above<>/left"],
+ 'x' => ["g3", => "ex<>chan<>ge"],
+ 'z' => ["g3", => "close pre<>view"],
}, # mode ^w
'^wg' => {
lead => "ŵg",
- "\e"=> "g7 mode",
- '^['=> "=\e",
- ']' => "g3",
- '}' => "g3",
- '^]'=> "g3",
- 'f' => "g4 v7",
- 'F' => "g4 v7",
+ "\e"=> ["g7 mode", "normal mode"],
+ '^['=> \"^wg\e",
+ ']' => ["g3", => "split, :ts<>elect"],
+ '}' => ["g3", => ":ptj<>ump to tag"],
+ '^]'=> ["g3", "split, :tj<>ump"],
+ 'f' => ["g4 v7", => "file in tab"],
+ 'F' => ["g4 v7", => "^wgf, to line<>nr"],
}, # mode ^w g
v => {
- "\e"=> "g7 mode",
-
- '!' => "g4",
- ':' => "g7 modec",
- '<' => "g4",
- '=' => 'g4 undo',
- '>' => 'g4',
- '~' => "g4 v6",
- '^['=> "=\e",
- '^]'=> "g3",
- '^\\'=>'^\\',
-
- 'a' => 'g9 modeva arg v6',
- 'A' => 'g6 modei v6',
- '^a'=> 'g4 undo v8',
- 'c' => 'g6 modei v6',
- 'C' => 'g6 modei v6',
- '^c'=> "g7 mode",
- 'd' => "g4 v6",
- 'D' => "g4 v6",
- 'g' => "g9 arg modevg",
- '^g'=> "g8",
- 'i' => "g9 modeva arg v6",
- 'I' => "g6 modei v6", # block
- 'J' => "g4",
- 'K' => 'g4',
- 'o' => "g2",
- 'O' => "g2",
- '^o'=> "g8",
- 'p' => 'g4',
- 'P' => 'g4',
- 'r' => 'g4 arg',
- 'R' => "=vS", # "might change in future"
- 's' => "=vc",
- 'S' => 'g6 modei v6',
- 'u' => "g4 v6",
- 'U' => "g4 v6",
- 'v' => "g8",
- 'V' => "g8",
- '^v'=> "g8 v6",
- 'x' => "=vd",
- 'X' => "=vD",
- '^x'=> 'g4 undo v8',
- 'y' => "g4",
- 'Y' => "g4",
-
- (map { $_ => "=$_" } @motions, qw(
+ "\e"=> ["g7 mode", "normal mode"],
+
+ '!' => ["g4", "external filter"],
+ ':' => ["g7 modec", "cmd on range"],
+ '<' => ["g4", "un<>indent"],
+ '=' => ['g4 undo', "re<>ind<>ent"],
+ '>' => ['g4', "ind<>ent"],
+ '~' => ["g4 v6", "toggle case"],
+ '^['=> \"v\e",
+ '^]'=> ["g3", "jump to tag"],
+ '^\\'=>\'^\\',
+
+ 'a' => ['g9 modeva arg v6', "ex<>tend area"],
+ 'A' => ['g6 modei v6', "ap<>pend to block"], # block
+ '^a'=> ['g4 undo v8', "incr<>ement num<>bers"],
+ 'c' => ['g6 modei v6', "repl<>ace area"],
+ 'C' => ['g6 modei v6', "repl<>ace full lines"], # like vS, but blocks are extended until eol
+ '^c'=> ["g7 mode", "abort"],
+ 'd' => ["g4 v6", "delete area"],
+ 'D' => ["g4 v6", "delete lines"],
+ 'g' => ["g9 arg modevg", "extra cmds"],
+ '^g'=> ["g8", "select mode"],
+ 'i' => ["g9 modeva arg v6", "extend inner a<>r<>ea"],
+ 'I' => ["g6 modei v6", "insert to block"], # block
+ 'J' => ["g4", "join lines"],
+ 'K' => ['g4', "help sel<>ect<>ion"],
+ 'o' => ["g2", "to other corner"],
+ 'O' => ["g2", "to other side"],
+ '^o'=> ["g8", "visual once"], # select
+ 'p' => ['g4', "repl<>ace w/ paste"],
+ 'P' => ['g4', "repl<>ace w/ paste"],
+ 'r' => ['g4 arg', "fill up w/ ch<>ar"],
+ 'R' => \'vS', # "might change in future"
+ 's' => \'vc',
+ 'S' => ['g6 modei v6', "repl<>ace lines"],
+ 'u' => ["g4 v6", "lower<>case"],
+ 'U' => ["g4 v6", "upper<>case"],
+ 'v' => ["g8", "char<>wise"],
+ 'V' => ["g8", "line<>wise"],
+ '^v'=> ["g8 v6", "block<>wise"],
+ 'x' => \'vd',
+ 'X' => \'vD',
+ '^x'=> ['g4 undo v8', "decr<>ement num<>bers"],
+ 'y' => ["g4", "yank area"],
+ 'Y' => ["g4", "yank lines"],
+
+ (map { $_ => \$_ } @motions, qw(
^b ^d ^e ^f ^i m q ^q ^s ^u ^w ^y z ^z "
- )), # a lot like normal mode
+ )), # a lot like normal mode TODO
}, # mode v
- vg => {
+ 'vg' => {
lead => "g",
- "\e"=> "g8 modev",
-
- '^['=> "=\e",
- '?' => "g4 v6",
- '^a'=> 'g4 undo v8',
- '^g' => "g1 vim6",
- 'c' => 'g4 xcommentary',
- 'J' => 'g4 v6',
- 'l' => 'g3 arg xlion',
- 'L' => 'g3 arg xlion',
- 'q' => "g4 v6",
- 'v' => "=gv",
- 'w' => 'g4 v7',
- '^x'=> 'g4 undo v8',
+ "\e"=> ["g8 modev", "visual mode"],
+
+ '^['=> \"vg\e",
+ '?' => ["g4 v6", => "rot13 encode"],
+ '^a'=> ['g4 undo v8', "seq. incr<>ement"],
+ '^g' => ["g1 vim6", "count region info"],
+ 'J' => ['g4 v6', => "join literal<>ly"],
+ 'q' => ["g4 v6", => "for<>mat"],
+ 'v' => \'gv',
+ 'w' => ['g4 v7', => "for<>mat still"],
+ '^x'=> ['g4 undo v8', "seq. decr<>ement"],
+
+ # plugins
+ 'c' => ['g4 xcommentary', => "(un)<>com<>ment\ncommentary or tComment plugin"],
+ 'l' => ['g3 arg xlion', => "align to left\nlion plugin, also good for easy-align"],
+ 'L' => ['g3 arg xlion', => "align to right\nlion plugin"],
}, # mode v g
va => {
- "\e"=> "g8 modev",
-
- '(' => "=vab",
- ')' => "=vab",
- '`' => "=va'",
- "'" => 'g2 v7',
- '"' => "=va'",
- '<' => 'g2 v6',
- '>' => "=va<",
- '[' => 'g2 v6',
- '{' => "=vaB",
- '^['=> "=\e",
- ']' => "=va[",
- '}' => "=vaB",
-
- 'b' => 'g2 v6',
- 'B' => 'g2 v6',
- 'p' => 'g2 v6',
- 's' => 'g2 v6',
- 't' => 'g2 v7',
- 'w' => 'g2 v6',
- 'W' => 'g2 v6',
+ "\e"=> ["g8 modev", "visual mode"],
+
+ '(' => \'vab',
+ ')' => \'vab',
+ '`' => \"va'",
+ "'" => ['g2 v7', "quoted string"],
+ '"' => \"va'",
+ '<' => ['g2 v6', => "<> block"],
+ '>' => \'va<',
+ '[' => ['g2 v6', => "[] block"],
+ '{' => \'vaB',
+ '^['=> \"va\e",
+ ']' => \'va[',
+ '}' => \'vaB',
+
+ 'b' => ['g2 v6', => "() block"],
+ 'B' => ['g2 v6', => "{} Block"],
+ 'p' => ['g2 v6', => "para<>graph"],
+ 's' => ['g2 v6', => "senten<>ce"],
+ 't' => ['g2 v7', => "xml tag block"],
+ 'w' => ['g2 v6', => "word"],
+ 'W' => ['g2 v6', => '<span style="font-variant:small-caps">word</span>'],
}, # mode v a
#c => {
# desc => "command-line mode",
#
- # '^_' => "=i^_",
- # '^^' => "=i^^",
+ # '^_' => \"i^_",
+ # '^^' => \"i^^",
# '^\\'=>'^\\',
- # '^a' => "", #todo
- # '^b' => "g3",
- # '^c' => "=i^c",
- # '^d' => "", #todo
- # '^e' => "g3",
- # '^h' => "=i^h",
- # '^j' => "g4",
- # '^k' => "=i^k",
- # '^l' => "", #todo
- # '^n' => "", #todo
- # '^p' => "", #todo
- # '^r' => "=i^r", # and then some...
- # ## ["g4 arg v6"],
- # '^q' => "=^q",
- # '^u' => "=i^u",
- # '^v' => "=i^v",
- # '^w' => "=i^w",
- # '^y' => "g4",
+ # '^a' => ["", "complete"], #todo
+ # '^b' => ["g3", "bol"],
+ # '^c' => \"i^c",
+ # '^d' => ["", "complete"], #todo
+ # '^e' => ["g3", "eol"],
+ # '^h' => \"i^h",
+ # '^j' => ["g4", "execute cmd"],
+ # '^k' => \"i^k",
+ # '^l' => ["", "complete"], #todo
+ # '^n' => ["", "complete"], #todo
+ # '^p' => ["", "complete"], #todo
+ # '^r' => \'i^r', # and then some...
+ # ## ["g4 arg v6", "insert register"],
+ # '^q' => \"^q",
+ # '^u' => \"i^u",
+ # '^v' => \"i^v",
+ # '^w' => \"i^w",
+ # '^y' => ["g4", "selec<>tion to clip<>b<>oard"],
#}, # mode c
i => {
- "\e" => "g7 mode",
-
- '^@' => "g4",
- '^^' => "g4 v6",
- '^['=> "=\e",
- '^]' => "g4 v6",
- '^_' => "g4 v6",
- '^\\'=>'^\\',
-
- '^a' => "g4 v6",
- '^b' => "no v6",
- '^c' => "g7 mode",
- '^d' => 'g4',
- '^e' => "g4 v6",
- '^f' => 'g4',
- '^g' => "g9 modei^g arg",
- '^h' => "g4",
- '^i' => "g4",
- '^j' => "g4",
- '^k' => 'g4 arg arg v6 linkdigraphs',
- '^l' => "g7 mode v6", # insertmode only
- '^m' => "g4",
- '^n' => "g2 v6",
- '^o' => 'g4',
- '^p' => "g2 v6",
- '^q' => "=^q", # or i^v
- '^r' => 'g4 arg v6',
- '^s' => "=^s",
- '^t' => "g4",
- '^u' => "g4",
- '^v' => 'g4 linkcharset',
- '^w' => "g4",
- '^x' => 'g9 arg modei^x v6',
- '^y' => "g4 v6",
- '^z' => "g1 v6", # insertmode only
+ "\e" => ["g7 mode", "normal mode"],
+
+ '^@' => ["g4", => "last insert"],
+ '^^' => ["g4 v6", => "toggle :lmap usag<>e"],
+ '^[' => \"i\e",
+ '^]' => ["g4 v6", => "abbrev<>iate"],
+ '^_' => ["g4 v6", => "toggle lang<>uage"],
+ '^\\'=>\'^\\',
+
+ '^a' => ["g4 v6", => "insert prev<>ious"],
+ '^b' => ["no v6", => "former i^_"],
+ '^c' => ["g7 mode", => "abort, no abbr"],
+ '^d' => ['g4', => "un<>ind<>ent"],
+ '^e' => ["g4 v6", => "ins char below"],
+ '^f' => ['g4', => "set indent<>ation"],
+ '^g' => ["g9 modei^g arg", => "extra cmds"],
+ '^h' => ["g4", => "back<>space"],
+ '^i' => ["g4", => "tab"],
+ '^j' => ["g4", => "enter"],
+ '^k' => ['g4 arg arg v6 linkdigraphs', => "di<>graph\nKey code"],
+ '^l' => ["g7 mode v6", => "<em>im</em> leave ins mode"], # insertmode only
+ '^m' => ["g4", => "enter"],
+ '^n' => ["g2 v6", => "find next keyword"],
+ '^o' => ['g4', => "exec<>ute cmd"],
+ '^p' => ["g2 v6", => "find prev keyword"],
+ '^q' => \'^q', # or i^v
+ '^r' => ['g4 arg v6', "insert reg<>ister"],
+ '^s' => \'^s',
+ '^t' => ["g4", => "indent"],
+ '^u' => ["g4", => "delete line"],
+ '^v' => ['g4 linkcharset', => "literal or ch<>ar<>cod<>e\nVerbatim or by Value"],
+ '^w' => ["g4", => "delete word back"],
+ '^x' => ['g9 arg modei^x v6', => "ex<>pand mode"],
+ '^y' => ["g4 v6", => "ins char above"],
+ '^z' => ["g1 v6", => ":sus<>pend in <em>im</em>"], # insertmode only
}, # modei
'i^g' => {
lead => "ĝ",
- "\e"=> 'g6 modei',
+ "\e"=> ['g6 modei', "insert mode"],
- 'k' => 'g2',
- 'j' => 'g2',
- 's' => 'g4 arg xsurround',
- 'u' => 'g4',
- 'U' => 'g4 v8',
+ 'k' => ['g2', => "<up> start col<>umn"],
+ 'j' => ['g2', => "<down> start col<>umn"],
+ 'u' => ['g4', => "break undo seq<>uence"],
+ 'U' => ['g4 v8', => "keep undo seq<>uence"],
# other keys (even esc) are not recognized
+
+ 's' => ['g4 arg xsurround', => "sur<>round\nsurround plugin"],
}, # mode i ^g
'i^x' => {
lead => "x̂",
- "\e" => "g7 mode", # yes, it really leaves insert mode
-
- '^['=> "=\e",
- '^]' => 'g4',
- '^d' => 'g4',
- '^e' => "g3",
- '^f' => 'g4',
- '^i' => 'g4',
- '^k' => 'g4',
- '^l' => 'g4',
- '^n' => 'g4',
- '^o' => 'g4 v7',
- '^p' => 'g4',
- '^s' => 'g4',
- 's' => "=i^x^s",
- '^t' => 'g4',
- '^u' => 'g4 v7',
- '^v' => 'g4',
- '^y' => "g3",
+ "\e" => ["g7 mode", "normal mode"], # yes, it really leaves insert mode
+
+ '^['=> \"i^x\e",
+ '^]' => ['g4', => "tag comp<>l<>et<>e"],
+ '^d' => ['g4', => "def<>ine compl<>et<>e"],
+ '^e' => ["g3", => "window up"],
+ '^f' => ['g4', => "file comp<>l<>et<>e"],
+ '^i' => ['g4', => "ident comp<>l<>et<>e"],
+ '^k' => ['g4', => "dict comp<>l<>et<>e"],
+ '^l' => ['g4', => "line comp<>l<>et<>e"],
+ '^n' => ['g4', => "next comp<>l<>et<>e"],
+ '^o' => ['g4 v7', => "omni comp<>l<>et<>e"],
+ '^p' => ['g4', => "prev comp<>l<>ete"],
+ '^s' => ['g4', => "spell sugg<>est"],
+ 's' => \'i^x^s',
+ '^t' => ['g4', => "thes<>aur<>us compl<>et<>e"],
+ '^u' => ['g4 v7', => "cus<>tom comp<>l<>et<>e"],
+ '^v' => ['g4', => "ex cmd compl<>et<>e"],
+ '^y' => ["g3", => "window down"],
}, # mode i ^x
d => {
lead => "d",
- "\e"=> "g7 mode",
- '^['=> "=\e",
-
- (map { $_ => 'g4' } @motions),
- (map { $_ => 'g4 arg' } qw( f F t T ` ' / ? )), # @motions with option
- (map { $_ => "=v$_" } qw( a i )), # motions from virtual
- (map { $_ => "=$_" } qw( g z [ ] \\ ^\\ ^q ^s ^z )),
-
- 'd' => 'g4',
- 'o' => 'g5',
- 'p' => 'g5',
- 's' => 'g4 arg xsurround',
-
- 'l' => '=x',
- 'h' => '=X',
- '^h' => '=X',
- '^j' => '=dj',
- '^m' => '=dj',
- '^n' => '=dj',
- '+' => '=dj',
- '^p' => '=dk',
- '-' => '=dk',
- '$' => '=D',
- '_' => '=dd',
+ "\e"=> ["g7 mode", "normal mode"],
+ '^['=> \"d\e",
+
+ 'd' => ['g4', 'delete line'],
+ 'o' => ['g5', 'diff obtain'],
+ 'p' => ['g5', 'diff put'],
+ 's' => ['g4 arg xsurround', 'delete surr<>oun<>d<>ing'],
+
+ (map { ($_ => [\$_, "delete to <alias>$_"]) } qw( g z [ ] )), # modes
+
+ # commands
+ (map { $_ => \$_ } qw( \\ ^\\ ^q ^s ^z )),
+ 'l' => \'x',
+ 'h' => \'X',
+ '^h' => \'X',
+ '^j' => \'dj',
+ '^m' => \'dj',
+ '^n' => \'dj',
+ '+' => \'dj',
+ '^p' => \'dk',
+ '-' => \'dk',
+ '$' => \'D',
+ '_' => \'dd',
+
+ # simple @motions
+ 'W' => ['g4', 'delete <span style="font-variant:small-caps">word</span>'],
+ 'b' => ['g4', 'delete <left> word'],
+ 'B' => ['g4', 'delete <left> <span style="font-variant:small-caps">word</span>'],
+ 'e' => ['g4', 'delete word e<>nd'],
+ 'E' => ['g4', 'delete <span style="font-variant:small-caps">word</span> e<>nd'],
+ 'G' => ['g4', 'delete to line<>/eof'],
+ 'H' => ['g4', 'delete to top'],
+ 'j' => ['g4', 'delete <down> line'],
+ 'k' => ['g4', 'delete <up> line'],
+ 'L' => ['g4', 'delete to bottom'],
+ 'M' => ['g4', 'delete to middle'],
+ 'n' => ['g4', 'delete to next res<>ult'],
+ 'N' => ['g4', 'delete to prev res<>ult'],
+ 'w' => ['g4', 'delete word'],
+ ',' => ['g4', 'delete to prev ch<>ar<>acter'],
+ ';' => ['g4', 'delete to next ch<>ar<>acter'],
+ '*' => ['g4', 'delete to find'],
+ '#' => ['g4', 'delete <left> to find'],
+ '%' => ['g4', 'delete to line pct'],
+ '^' => ['g4', 'delete to soft bol'],
+ '0' => ['g4', 'delete to bol'],
+ '|' => ['g4', 'delete to col<>umn'],
+ '{' => ['g4', 'delete <left> par<>agr<>aph'],
+ '}' => ['g4', 'delete rest of p<>ar<>agr<>aph'],
+ '(' => ['g4', 'delete <left> senten<>ce'],
+ ')' => ['g4', 'delete rest of s<>en<>ten<>ce'],
+
+ # @motions with option
+ 'f' => ['g4 arg', 'delete to char<>acter'],
+ 'F' => ['g4 arg', 'delete <left> to char<>acter'],
+ 't' => ['g4 arg', 'delete upto ch<>ar<>acter'],
+ 'T' => ['g4 arg', 'delete <left> upto ch<>ar<>acter'],
+ '`' => ['g4 arg', 'delete to mark'],
+ "'" => ['g4 arg', 'delete lines to m<>ark'],
+ '/' => ['g4 arg', 'delete to res<>ult'],
+ '?' => ['g4 arg', 'delete <left> to res<>ult'],
+
+ # motions from virtual
+ 'a' => ['g9 modeva arg v6 alias', 'delete area'], # va
+ 'i' => ['g9 modeva arg v6 alias', 'delete inner'], # vi
}, # mode d
+ # y => { 'o' => ['g9 arg xunimpaired', "toggle option\nunimpaired plugin"] }, # TODO
+
# TODO: mode/ (command-line)
# XXX ex mode if you want to go completely wild
},
# vimperator v3.16.0
{
title => 'Vimperator',
-version => '1.3',
+version => '1.4',
description => [
"Interactive cheat sheet for the Vimperator (or Pentadactyl)",
"Firefox extension, describing the function of each key.",
],
keywords => [qw'vimperator firefox pentadactyl vim browser vimfx vimium cvim'],
-key => {
- '~' => "open home<>dir",
- '@' => "play macro",
- '^' => "left of page",
- '$' => "right of page",
- '#' => "rev. find word",
- '*' => "find word",
- '^^'=> "last tab",
- '?' => "find rev.",
- '/' => "find",
- '[' => "focus forw<>ard",
- ']' => "focus back",
- ':' => "comm<>and line mode",
- ';' => "extend<>ed hint<>s mode",
- "'" => "jump to mark",
- '|' => "toggle source",
- '+' => "en<>large text",
- '-' => "shrink text",
-
- 'a' => "add bookm<>ark",
- 'A' => "toggle bookm<>ark<>ed",
- '^a'=> "incr<>em<>ent url nr",
- 'b' => "to buffer",
- 'B' => "list buffers",
- '^b'=> "page up",
- 'c' => "caret mode",
- '^c'=> "stop loading",
- '^d'=> "scroll down",
- 'd' => "close tab",
- 'D' => "close tab left<>ward<>s",
- 'f' => "quick<>hint mode",
- 'F' => "f in tab",
- '^f'=> "page down",
- 'g' => "extra cmds",
- 'G' => "last/% line",
- '^g'=> "file name",
- 'h' => "<left>",
- 'H' => "page back",
- 'i' => "ignore key",
- 'I' => ":ignore<>keys add cmd",
- 'j' => "<down>",
- 'k' => "<up>",
- 'l' => "<right>",
- 'L' => "page forw<>ard",
- 'M' => "mark url",
- 'm' => "mark line",
- 'n' => "find next",
- 'N' => "find prev<>ious",
- '^n'=> "next tab",
- 'o' => "open",
- 'O' => "alter url",
- 'p' => "open pasted url",
- 'P' => "p in tab",
- 'q' => "record macro",
- 'r' => "reload page",
- 'R' => "reload uncach<>e<>d",
- 't' => "tab open new",
- 'T' => "tab open curr<>ent",
- '^v'=> "pass single",
- '^u'=> "scroll up",
- 'u' => "restore closed tab",
- '^x'=> "decr<>em<>ent url nr",
- 'w' => "open in win<>dow",
- 'W' => "copy to new win<>dow",
- 'y' => "copy url",
- 'Y' => "copy select<>ion",
- 'z' => "zoom",
- 'Z' => "quit",
-
- "g\e"=> "normal mode",
- 'g0' => "first tab",
- 'g@' => "first app tab",
- 'g$' => "last tab",
-
- 'gb' => "repeat buffer cmd",
- 'gB' => "reverse gb",
- 'gf' => "view source",
- 'gF' => "source extern<>al",
- 'g^g'=> "file details",
- 'gg' => "first line",
- 'gh' => "open home<>page",
- 'gH' => "tab with home<>page",
- 'gi' => "last input field",
- 'gn' => "tabopen url mark\nGo in New tab",
- 'go' => "open url mark",
- 'gP' => "<alias>P inactive",
- 'gr' => "reader view",
- 'gt' => "switch tab",
- 'gT' => "tab back",
- 'gu' => "parent dir<>ectory",
- 'gU' => "site root",
-
- ";\e"=> "normal mode",
- ';;' => "focus",
- ';#' => "copy anchor",
- ';?' => "element details",
- ';a' => "save as",
- ';A' => "save media as",
- ';b' => "open bg tab",
- ';c' => "context menu",
- ';f' => "frame focus",
- ';F' => "multiple bg tabs",
- ';i' => "image",
- ';I' => "image in tab",
- ';o' => "open",
- ';O' => "open prompt",
- ';s' => "save",
- ';S' => "save media obj<>ect",
- ';t' => "open in tab",
- ';T' => "tab prompt",
- ';v' => "view source",
- ';V' => "edit source",
- ';w' => "open in wind<>ow",
- ';W' => "wind<>ow prompt",
- ';x' => "title or alt",
- ';y' => "copy url",
- ';Y' => "copy text",
-
- "]\e"=> "normal mode",
- ']f' => "next frame<>set",
- ']]' => "open <q>next</q>",
-
- "[\e"=> "normal mode",
- '[f' => "previous frame<>set",
- '[[' => "open <q>prev</q>",
-
- "z\e"=> "normal mode",
- 'zi' => "<alias>+\nZoom In",
- 'zm' => "en<>large more\nZoom More",
- 'zo' => "<alias>-\nZoom Out",
- 'zr' => "tinier text\nZoom Reduce",
- 'zz' => "reset text size\nZoom Zero",
- 'zI' => "zoom in",
- 'zM' => "zoom more",
- 'zO' => "zoom out",
- 'zR' => "zoom out more\nZoom Reduce",
- 'zZ' => "zoom reset\nZoom Zero",
-
- "Z\e"=> "normal mode",
- 'ZQ' => "quit no save",
- 'ZZ' => "quit save ses<>s<>ion",
-
- "c\e"=> "normal mode",
- 'c^' => "start of line",
- 'c$' => "end of line",
- 'c#' => "rev. find word",
- 'c*' => "find word",
- 'c?' => "find rev.",
- 'c/' => "find",
- 'c:' => "comm<>and line mode",
-
- 'cb' => "prev word\nBack",
- 'c^b'=> "page up",
- 'c^f'=> "page down",
- 'cg' => "g for first line",
- 'cG' => "last line",
- 'ch' => "<left>",
- 'c^i'=> 'extern<>al edit<>or',
- 'cj' => "<down>",
- 'ck' => "<up>",
- 'cl' => "<right>",
- 'cn' => "find next",
- 'cN' => "find prev<>ious",
- 'cv' => "select\nVisual mode",
- 'cw' => "next word",
-},
-
mode => {
'' => 'normal mode',
'g' => 'extended commands (g)',
def => {
'' => {
- '~' => 'g5',
- '@' => 'g7 arg',
- '^' => 'g2',
- '0' => '=^',
- '$' => 'g2',
- '#' => 'g2',
- '*' => 'g2',
- '+' => 'g1',
- '-' => 'g1',
- '^^'=> 'g3',
- '?' => 'g2 args',
- '/' => 'g2 args',
- '[' => 'g9 arg mode[',
- ']' => 'g9 arg mode]',
- ':' => 'g7 args',
- ';' => 'g9 arg args mode;',
- "'" => 'g2',
- '`' => "='",
- '|' => 'g5 v2 v2.2',
-
- 'a' => 'g7 args',
- 'A' => 'g7',
- '^a'=> 'g5',
- 'b' => 'g3 args',
- 'B' => 'g1',
- '^b'=> 'g2',
- 'c' => 'g8 modec',
- '^c'=> 'g4',
- '^d'=> 'g2',
- 'd' => 'g4',
- 'D' => 'g4',
- '^i'=> '=L',
- 'i' => 'g8 arg',
- 'I' => 'g7 args',
- '^e'=> '=j',
- 'f' => 'g5 args',
- 'F' => 'g6 args',
- '^f'=> 'g2', # spacebar
- 'g' => 'g9 modeg arg',
- 'G' => 'g2',
- '^g'=> 'g1',
- 'h' => 'g2',
- 'H' => 'g5',
- 'j' => 'g2',
- 'k' => 'g2',
- 'l' => 'g2',
- 'L' => 'g5',
- 'M' => 'g7 arg',
- 'm' => 'g7 arg',
- 'n' => 'g2',
- 'N' => 'g2',
- '^n'=> 'g3',
- 'o' => 'g5',
- 'O' => 'g5',
- '^o'=> '=H',
- 'p' => 'g5',
- 'P' => 'g6',
- '^p'=> '=gT',
- 'q' => 'g8 arg',
- 'r' => 'g4',
- 'R' => 'g5',
- 't' => 'g6',
- 'T' => 'g6',
- '^v'=> 'g4 arg',
- '^u'=> 'g2',
- 'u' => 'g6',
- 'w' => 'g6',
- 'W' => 'g6',
- '^w'=> '=d',
- '^x'=> 'g5',
- 'y' => 'g7',
- 'Y' => 'g7',
- '^y'=> '=k',
- 'z' => 'g1 modez arg',
- 'Z' => 'g9 modeZ arg',
+ '~' => ['g5', "open home<>dir"],
+ '@' => ['g7 arg', "play macro"],
+ '^' => ['g2', "left of page"],
+ '0' => \'^',
+ '$' => ['g2', "right of page"],
+ '#' => ['g2', "rev. find word"],
+ '*' => ['g2', "find word"],
+ '+' => ['g1', "en<>large text"],
+ '-' => ['g1', "shrink text"],
+ '^^'=> ['g3', "last tab"],
+ '?' => ['g2 args', "find rev."],
+ '/' => ['g2 args', "find"],
+ '[' => ['g9 arg mode[', "focus forw<>ard"],
+ ']' => ['g9 arg mode]', "focus back"],
+ ':' => ['g7 args', "comm<>and line mode"],
+ ';' => ['g9 arg args mode;', "extend<>ed hint<>s mode"],
+ "'" => ['g2', "jump to mark"],
+ '`' => \"'",
+ '|' => ['g5 v2 v2.2', "toggle source"],
+
+ 'a' => ['g7 args', "add bookm<>ark"],
+ 'A' => ['g7', "toggle bookm<>ark<>ed"],
+ '^a'=> ['g5', "incr<>em<>ent url nr"],
+ 'b' => ['g3 args', "to buffer"],
+ 'B' => ['g1', "list buffers"],
+ '^b'=> ['g2', "page up"],
+ 'c' => ['g8 modec', "caret mode"],
+ '^c'=> ['g4', "stop loading"],
+ '^d'=> ['g2', "scroll down"],
+ 'd' => ['g4', "close tab"],
+ 'D' => ['g4', "close tab left<>ward<>s"],
+ '^i'=> \'L',
+ 'i' => ['g8 arg', "ignore key"],
+ 'I' => ['g7 args', ":ignore<>keys add cmd"],
+ '^e'=> \'j',
+ 'f' => ['g5 args', "quick<>hint mode"],
+ 'F' => ['g6 args', "f in tab"],
+ '^f'=> ['g2', "page down"], # spacebar
+ 'g' => ['g9 modeg arg', "extra cmds"],
+ 'G' => ['g2', "last/% line"],
+ '^g'=> ['g1', "file name"],
+ 'h' => ['g2', "<left>"],
+ 'H' => ['g5', "page back"],
+ 'j' => ['g2', "<down>"],
+ 'k' => ['g2', "<up>"],
+ 'l' => ['g2', "<right>"],
+ 'L' => ['g5', "page forw<>ard"],
+ 'M' => ['g7 arg', "mark url"],
+ 'm' => ['g7 arg', "mark line"],
+ 'n' => ['g2', "find next"],
+ 'N' => ['g2', "find prev<>ious"],
+ '^n'=> ['g3', "next tab"],
+ 'o' => ['g5', "open"],
+ 'O' => ['g5', "alter url"],
+ 'p' => ['g5', "open pasted url"],
+ 'P' => ['g6', "p in tab"],
+ '^p'=> \'gT',
+ 'q' => ['g8 arg', "record macro"],
+ 'r' => ['g4', "reload page"],
+ 'R' => ['g5', "reload uncach<>e<>d"],
+ 't' => ['g6', "tab open new"],
+ 'T' => ['g6', "tab open curr<>ent"],
+ '^v'=> ['g4 arg', "pass single"],
+ '^u'=> ['g2', "scroll up"],
+ 'u' => ['g6', "restore closed tab"],
+ 'w' => ['g6', "open in win<>dow"],
+ 'W' => ['g6', "copy to new win<>dow"],
+ '^w'=> \'d',
+ '^x'=> ['g5', "decr<>em<>ent url nr"],
+ 'y' => ['g7', "copy url"],
+ 'Y' => ['g7', "copy select<>ion"],
+ '^y'=> \'k',
+ 'z' => ['g1 modez arg', "zoom"],
+ 'Z' => ['g9 modeZ arg', "quit"],
}, # normal mode
g => {
lead => 'g',
- "\e"=> 'g8 mode',
- '0' => 'g3',
- '@' => 'g3',
- '$' => 'g3',
- '^' => '=g0',
-
- 'b' => 'g3',
- 'B' => 'g3',
- 'f' => 'g5',
- 'F' => 'g6 linkvi',
- '^g'=> 'g1',
- 'g' => 'g2',
- 'h' => 'g5',
- 'H' => 'g6',
- 'i' => 'g2',
- 'n' => 'g6 arg',
- 'o' => 'g5 arg',
- 'P' => 'g6',
- 'r' => 'g5',
- 't' => 'g3',
- 'T' => 'g3',
- 'u' => 'g5',
- 'U' => 'g5',
+ "\e"=> ['g8 mode', "normal mode"],
+ '0' => ['g3', "first tab"],
+ '@' => ['g3', "first app tab"],
+ '$' => ['g3', "last tab"],
+ '^' => \'g0',
+
+ 'b' => ['g3', "repeat buffer cmd"],
+ 'B' => ['g3', "reverse gb"],
+ 'f' => ['g5', "view source"],
+ 'F' => ['g6 linkvi', "source extern<>al"],
+ '^g'=> ['g1', "file details"],
+ 'g' => ['g2', "first line"],
+ 'h' => ['g5', "open home<>page"],
+ 'H' => ['g6', "tab with home<>page"],
+ 'i' => ['g2', "last input field"],
+ 'n' => ['g6 arg', "tabopen url mark\nGo in New tab"],
+ 'o' => ['g5 arg', "open url mark"],
+ 'P' => ['g6', "<alias>P inactive"],
+ 'r' => ['g5', "reader view"],
+ 't' => ['g3', "switch tab"],
+ 'T' => ['g3', "tab back"],
+ 'u' => ['g5', "parent dir<>ectory"],
+ 'U' => ['g5', "site root"],
}, # mode g
';' => {
lead => ';',
- "\e"=> 'g8 mode',
- ';' => 'g2',
- '#' => 'g7',
- '?' => 'g1',
- 'a' => 'g7 args',
- 'A' => 'g7 args',
- 'b' => 'g6 v2',
- 'c' => 'g7 v2 v2.2',
- 'f' => 'g2 v2', # previously ';o'
- 'F' => 'g6 v2', # previously ';t'
- 'i' => 'g5 v2 v2.2',
- 'I' => 'g6 v2 v2.2',
- 'o' => 'g5',
- 'O' => 'g5 args',
- 's' => 'g7',
- 'S' => 'g7',
- 't' => 'g6',
- 'T' => 'g6 args',
- 'v' => 'g5',
- 'V' => 'g6 linkvi',
- 'w' => 'g6',
- 'W' => 'g6 args',
- 'x' => 'g1',
- 'y' => 'g7',
- 'Y' => 'g7',
+ "\e"=> ['g8 mode', "normal mode"],
+ ';' => ['g2', "focus"],
+ '#' => ['g7', "copy anchor"],
+ '?' => ['g1', "element details"],
+ 'a' => ['g7 args', "save as"],
+ 'A' => ['g7 args', "save media as"],
+ 'b' => ['g6 v2', "open bg tab"],
+ 'c' => ['g7 v2 v2.2', "context menu"],
+ 'f' => ['g2 v2', "frame focus"], # previously ';o'
+ 'F' => ['g6 v2', "multiple bg tabs"], # previously ';t'
+ 'i' => ['g5 v2 v2.2', "image"],
+ 'I' => ['g6 v2 v2.2', "image in tab"],
+ 'o' => ['g5', "open"],
+ 'O' => ['g5 args', "open prompt"],
+ 's' => ['g7', "save"],
+ 'S' => ['g7', "save media obj<>ect"],
+ 't' => ['g6', "open in tab"],
+ 'T' => ['g6 args', "tab prompt"],
+ 'v' => ['g5', "view source"],
+ 'V' => ['g6 linkvi', "edit source"],
+ 'w' => ['g6', "open in wind<>ow"],
+ 'W' => ['g6 args', "wind<>ow prompt"],
+ 'x' => ['g1', "title or alt"],
+ 'y' => ['g7', "copy url"],
+ 'Y' => ['g7', "copy text"],
}, # mode ;
']' => {
lead => ']',
- "\e"=> 'g8 mode',
- 'f' => 'g2',
- ']' => 'g5',
+ "\e"=> ['g8 mode', "normal mode"],
+ 'f' => ['g2', "next frame<>set"],
+ ']' => ['g5', "open <q>next</q>"],
}, # mode ]
'[' => {
lead => '[',
- "\e"=> 'g8 mode',
- 'f' => 'g2',
- '[' => 'g5',
+ "\e"=> ['g8 mode', "normal mode"],
+ 'f' => ['g2', "previous frame<>set"],
+ '[' => ['g5', "open <q>prev</q>"],
}, # mode [
z => {
lead => 'z',
- "\e"=> 'g8 mode',
- 'i' => '=+',
- 'm' => 'g1',
- 'o' => '=-',
- 'r' => 'g1',
- 'z' => 'g1',
- 'I' => 'g1',
- 'M' => 'g1',
- 'O' => 'g1',
- 'R' => 'g1',
- 'Z' => 'g1',
+ "\e"=> ['g8 mode', "normal mode"],
+ 'i' => [\'+', "<alias>+\nZoom In"],
+ 'm' => ['g1', "en<>large more\nZoom More"],
+ 'o' => [\'-', "<alias>-\nZoom Out"],
+
+ 'r' => ['g1', "tinier text\nZoom Reduce"],
+ 'z' => ['g1', "reset text size\nZoom Zero"],
+ 'I' => ['g1', "zoom in"],
+ 'M' => ['g1', "zoom more"],
+ 'O' => ['g1', "zoom out"],
+ 'R' => ['g1', "zoom out more\nZoom Reduce"],
+ 'Z' => ['g1', "zoom reset\nZoom Zero"],
}, # mode z
Z => {
lead => 'Z',
- "\e"=> 'g8 mode',
- 'Q' => 'g7',
- 'Z' => 'g7',
+ "\e"=> ['g8 mode', "normal mode"],
+ 'Q' => ['g7', "quit no save"],
+ 'Z' => ['g7', "quit save ses<>s<>ion"],
}, # mode Z
c => {
- "\e"=> 'g8 mode',
- '^' => 'g2',
- '0' => '=^',
- '$' => 'g2',
- '#' => 'g2',
- '*' => 'g2',
- '?' => 'g2 args',
- '/' => 'g2 args',
- ':' => 'g7 args',
-
- 'b' => 'g2',
- 'B' => '=b',
- '^b'=> 'g2',
- 'e' => '=w',
- '^f'=> 'g2',
- 'g' => 'g9 arg',
- 'G' => 'g2',
- 'h' => 'g2',
- '^i'=> 'g7',
- 'j' => 'g2',
- 'k' => 'g2',
- 'l' => 'g2',
- 'n' => 'g2',
- 'v' => 'g8',
- 'w' => 'g2',
- 'W' => '=w',
+ "\e"=> ['g8 mode', "normal mode"],
+ '^' => ['g2', "start of line"],
+ '0' => \'^',
+ '$' => ['g2', "end of line"],
+ '#' => ['g2', "rev. find word"],
+ '*' => ['g2', "find word"],
+ '?' => ['g2 args', "find rev."],
+ '/' => ['g2 args', "find"],
+ ':' => ['g7 args', "comm<>and line mode"],
+
+ 'b' => ['g2', "prev word\nBack"],
+ 'B' => \'b',
+ '^b'=> ['g2', "page up"],
+ 'e' => \'w',
+ '^f'=> ['g2', "page down"],
+ 'g' => ['g9 arg', "g for first line"],
+ 'G' => ['g2', "last line"],
+ 'h' => ['g2', "<left>"],
+ '^i'=> ['g7', 'extern<>al edit<>or'],
+ 'j' => ['g2', "<down>"],
+ 'k' => ['g2', "<up>"],
+ 'l' => ['g2', "<right>"],
+ 'n' => ['g2', "find next"],
+ 'N' => ['g2', "find prev<>ious"],
+ 'v' => ['g8', "select\nVisual mode"],
+ 'w' => ['g2', "next word"],
+ 'W' => \'w',
}, # caret mode
},
}
use utf8;
+use strict;
+use warnings;
+no warnings 'qw';
my @num = qw(^0 ^0 ^@ ^0 ^0 ^0 ^^ ^0 ^0 ^0 ^0);
dvorak => [[