less: complete declarations and add page, links
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 6 Feb 2010 07:30:32 +0000 (07:30 +0000)
committerMischa POSLAWSKY <perl@shiar.org>
Sat, 6 Feb 2010 07:42:55 +0000 (07:42 +0000)
base.css
index.plp
less.inc.pl
less.plp [new file with mode: 0644]

index 078b27d057b8b3364e385d19f79dd3bdee673c1a..41742e337423134065b54d50a664898e9be2474a 100644 (file)
--- a/base.css
+++ b/base.css
@@ -417,6 +417,14 @@ ul.keys li.ni {
        padding: 1px; /* same size as borderlessless keys */
 }
 
        padding: 1px; /* same size as borderlessless keys */
 }
 
+dl.legend dt.more,
+ul.keys li.more b {
+       text-shadow: #F20 0 0 0.1em;
+}
+dl.legend dt.more:hover,
+ul.keys li.more:hover b {
+       text-shadow: #F20 0 0 0.5em, #FC0 0 0 0.2em;
+}
 dl.legend dt.ext,
 ul.keys li.ext {
        border-style: dashed;
 dl.legend dt.ext,
 ul.keys li.ext {
        border-style: dashed;
index 839392dc35ed4d5336d5f7b8d51cbe3613474acd..bda90ad5656a2f9aaffba61680fb70a3e63924ab 100644 (file)
--- a/index.plp
+++ b/index.plp
@@ -27,6 +27,7 @@ but you're free to use, print, alter, and redistribute under the AGPL license.
 <h2>Keyboard maps</h2>
 <ul>
 <li><a href="/readline">readline</a>
 <h2>Keyboard maps</h2>
 <ul>
 <li><a href="/readline">readline</a>
+<li><a href="/less">less</a>
 <li><a href="/vi">vi/vim</a>
 <li><a href="/vimperator">vimperator</a>
 <li><a href="/mutt">mutt</a>
 <li><a href="/vi">vi/vim</a>
 <li><a href="/vimperator">vimperator</a>
 <li><a href="/mutt">mutt</a>
index 164fd4098305ebfb493adf840af94dd1b5a84948..b5572eb686959e7e689820ff854373636e5e2573 100644 (file)
@@ -3,36 +3,145 @@ use utf8;
 # less v418
 
 '' => {
 # less v418
 
 '' => {
-       desc => 'index',
+       desc => 'normal pager',
 
 
-       'b' => ["page up"],
+       'b' => ["page up", 'pm more'],
        '^b'=> 'b',
        '^b'=> 'b',
+       'd' => ['scroll down', 'pm more'],
+       '^d'=> 'd',
        'e' => 'j',
        '^e'=> 'j',
        'e' => 'j',
        '^e'=> 'j',
-       'f' => ["page down"],
+       'f' => ["page down", 'pm more'],
        '^f'=> 'f',
        '^f'=> 'f',
-       'h' => ["help"],
+       'F' => ["follow", 'mo', 'Forward Forever'],
+       'g' => ["(first) line", 'pm'],
+       '^g'=> '=',
+       'G' => ["last line", 'pm'],
+       'h' => ["help", 'mo more'],
        'H' => 'h',
        'H' => 'h',
-       'j' => [$sign{down}],
-       'k' => [$sign{up}],
+       'j' => [$sign{down}, 'pm'],
+       'k' => [$sign{up}, 'pm'],
        '^k'=> 'k',
        '^k'=> 'k',
+       '^l'=> 'r', # more
+       'm' => ["mark pos$sign{_}ition", 'po arg'],
        '^m'=> 'j',
        '^m'=> 'j',
+       'n' => ["next find", 'co more'],
+       'N' => ["prev find", 'co'],
        '^n'=> 'j',
        '^n'=> 'j',
-       '^p'=> 'j',
-       'q' => ["quit"],
+       'p' => ["reset position", 'pm', 'beginning or Percentage'],
+       '^p'=> 'k',
+       'q' => ["quit", 'mv more'],
        'Q' => 'q',
        'Q' => 'q',
+       'r' => ["redraw", 'ci'],
+       '^r'=> 'r',
+       'R' => ["refresh", 'ci'],
+       's' => ["save to file", 'mv arg'],
+       't' => ["next tag", 'co'],
+       'T' => ["prev tag", 'co'],
+       'u' => ['scroll up', 'pm'],
+       '^u'=> 'u',
+       'v' => ["edit", 'mv linkvi more'],
        '^v'=> 'f',
        '^v'=> 'f',
-       'w' => ["page up and set window"],
+       'V' => ["version", 'ci'],
+       'w' => ["page up and set window", 'pm'],
+       '^x'=> ["emacs aliases", 'mv arg mode^x'],
        'y' => 'k',
        '^y'=> 'k',
        'y' => 'k',
        '^y'=> 'k',
-       'z' => ["page down and set window"],
+       'z' => ["set page down", 'pm more'],
+
+       '!' => ["shell command", 'mv more'],
+       '|' => ["pipe till mark", 'mv arg'],
+       ':' => ["com$sign{_}mand", 'mv arg mode:'],
+       '/' => ["find", 'co arg more'],
+       '?' => ["find rev.", 'co arg'],
+       '%' => 'p',
+       '&' => ["filter match$sign{_}es", 'co arg'],
+       "'" => ["goto mark", 'po arg'],
+       '-' => ["toggle option", 'mv arg mode-'],
+       '_' => ["show option", 'ci arg mode-'],
+       '=' => ["file name", 'ci more'],
+       '+' => ["initial cmd", 'mo'],
+
+       '(' => ["closing", 'co'],
+       '<' => 'g',
+       '>' => 'G',
 },
 
 },
 
-'\\' => {
+'esc' => {
+       'n' => ["any next find", 'co'],
+       'N' => ["any prev find", 'co'],
+       'u' => ["mark search", 'ci', 'Undo'],
        'v' => 'b',
        'v' => 'b',
-}, # esc
+       '(' => ["scroll left", 'pm'],
+       ')' => ["scroll right", 'pm'],
+       '<' => 'g',
+       '>' => 'G',
+},
+
+#'^x' => {
+#      '^x' => "'",
+#      '^v' => ':e',
+#},
 
 ':' => {
 
 ':' => {
+       'd' => ["drop file", 'mo'],
+       'e' => ["open file", 'mo'],
+       'f' => '=',
+       'n' => ["next file", 'mo more'],
+       'p' => ["prev file", 'mo more'],
        'q' => 'q',
        'Q' => ':q',
        'q' => 'q',
        'Q' => ':q',
-}, # colon
+       'x' => ["first file", 'mo'],
+},
+
+'-' => {
+       'a' => ["advance find page", 'co'],
+       'b' => ["buffer space", 'mo arg'],
+       'B' => ["static buffer for pipes", 'mo'],
+       'c' => ["clear on scroll", 'pm'],
+       'd' => ["dumb term$sign{_}inal", 'mv'],
+       'D' => ["dos colours", 'mv arg ext'],
+       'e' => ["exit after eof", 'mo'],
+       'E' => ["exit at eof", 'mo'],
+       'f' => ["force open", 'mo'],
+       'F' => ["exit if 1 page", 'mo'],
+       'g' => ["hilight last match", 'co'],
+       'h' => ["scroll back limit", 'pm arg'],
+       'i' => ["ignore lower$sign{_}c$sign{_}ase", 'co'],
+       'I' => ["ignore case", 'co'],
+       'j' => ["top offset", 'po arg'],
+       'J' => ["status column", 'ci'],
+       'k' => ["key bind$sign{_}ing$sign{_}s", 'mv arg'],
+       'L' => [qq[ignore <span style="font-variant:small-caps">lesso$sign{_}pen</span> filter], 'mv'],
+       'm' => ["med. promp$sign{_}t tog$sign{_}gle", 'ci'],
+       'M' => ["long promp$sign{_}t tog$sign{_}gle", 'ci'],
+       'n' => ["count line num$sign{_}ber$sign{_}s", 'mv'],
+       'N' => ["show line n$sign{_}um$sign{_}ber$sign{_}s", 'ci'],
+       'o' => ["stdin to log", 'me arg'],
+       'O' => ["log overwrite", 'me arg'],
+       'p' => ["initial search", 'co arg'],
+       'P' => ["status line", 'ci arg', "Prompt"],
+       'q' => ["no info bell", 'mv', "Quiet"],
+       'Q' => ["no warn bell", 'mv', "Quiet!"],
+       'r' => ["raw chars", 'mv'],
+       'R' => ["ansi chars", 'mv'],
+       's' => ["squeeze blank lines", 'mv'],
+       'S' => ["no line wrap", 'mv'],
+       't' => ["find tag", 'co arg'],
+       'T' => ["tags file", 'co arg'],
+       'u' => ['parse \b \r', 'mv'],
+       'U' => ['escape \t \b \r', 'mv'],
+       'V' => 'V',
+       'w' => ["hilight page d$sign{_}own", 'mv'],
+       'W' => ["hilight forw$sign{_}ard", 'mv'],
+       'x' => ["tab stops", 'mv arg'],
+       'X' => ["no termcap init", 'mv'],
+       'y' => ["scroll limit fw$sign{_}d", 'pm arg'],
+       'z' => ["page size", 'pm arg'],
+       '"' => ["shell quotes", 'mv arg'],
+       '~' => ["outside tildes toggle", 'mv'],
+       '#' => ["col shift", 'pm arg'],
+       '-' => ["option name", 'mv arg'],
+       '+' => ["reset option", 'mv arg'],
+},
+
diff --git a/less.plp b/less.plp
new file mode 100644 (file)
index 0000000..ce5ca14
--- /dev/null
+++ b/less.plp
@@ -0,0 +1,99 @@
+<(common.inc.plp)><:
+
+Html({
+       title => 'less cheat sheet',
+       version => 'v1.0',
+       description => [
+               "Default bindings of the less pager.",
+               "Clearly shows how much it's more than more.",
+       ],
+       keywords => [qw'
+               less sheet cheat keys pager more
+               shortkey reference keyboard commands options overview
+       '],
+       charset => $sign{charset},
+       stylesheet => [qw'light dark circus mono red terse'],
+       keys => 1,
+});
+
+:>
+<h1>Less cheat sheet</h1>
+
+<h2>normal pager (default)</h2>
+
+<ul id="rows">
+
+<li class="row"><ul>
+       <li>
+               <ul class="keys omni">
+               <li class="mo chr27" onclick="setmode('modeesc')"><b>Esc</b> alt<:=$sign{_}:>/meta
+               </ul>
+       <li class="mode modeesc">
+               <ul class="keys omni">
+               <li class="mo chr27" onclick="setmode()"><b>Esc</b> noop
+               </ul>
+       <li class="mode mode:">
+               <ul class="keys omni">
+               <li class="mo chr27" onclick="setmode()"><b>Esc</b> noop
+               </ul>
+       <li class="mode mode-">
+               <ul class="keys omni">
+               <li class="mo chr27" onclick="setmode()"><b>Esc</b> noop
+               </ul>
+       <li class="mode mode^x">
+               <ul class="keys omni">
+               <li class="mo chr27" onclick="setmode()"><b>Esc</b> noop
+               </ul>
+       </ul>
+
+<:
+use Shiar_Sheet::Keyboard;
+my $keys = Shiar_Sheet::Keyboard->new({do 'less.inc.pl'});
+$keys->map($get{map}) or undef $get{map};
+$keys->print_rows($get{rows}, [1,0]);
+:>
+</ul>
+
+<hr>
+
+<div class="help">
+       <div class="left">
+               <dl class="legend legend-types">
+               <dt class="ci">info
+                       <dd>Temporary message display (or related option).
+               <dt class="pm">move
+                       <dd>Regular file position panning (or option).
+               <dt class="po">jump
+                       <dd>Other file position manipulation (").
+               <dt class="co">search
+                       <dd>Go to matching content (").
+               <dt class="mo">file
+                       <dd>Alter open file buffer (").
+               <dt class="mv">misc
+                       <dd>Other commands and options.
+               </dl>
+       </div>
+
+       <div class="right">
+               <dl class="legend legend-options">
+               <dt>key<:= $sign{arg} :>
+                       <dd>Commands with a dot need a char argument afterwards.
+               <dt class="more">more
+                       <dd>A small subset is compatible with `more`.
+               </dl>
+
+               <ul class="legend legend-set">
+               <li>keyboard <strong>map</strong> is
+                       <:= $get{map} ? 'set to ' : '' :><em><:= $keys->{map} :></em>
+               <li><strong>ascii</strong> mode is
+                       <:= defined $sign{-ascii} && 'forced ' :><em><:=
+                               $sign{-ascii} ? 'on' : 'off' :></em>
+               <li><strong>keys</strong> are
+                       <em><:= $showkeys ? 'always shown' : 'hidden if unassigned' :></em><:=
+                               !exists $get{keys} && ' by default' :>
+               <li>default <strong>style</strong> is
+                       <:= defined $get{style} && 'set to ' :><em><:= $style :></em>
+               </ul>
+       </div>
+</div>
+