'' => {
desc => 'normal mode',
- '~' => ["open home$sign{_}dir"],
- '@' => ["play macro", 'arg'],
- '%' => ["to line pct", 'pm'], #TODO: G?
- '0' => ["left of page", 'pm'],
+ '~' => ["open home$sign{_}dir", 'cp'],
+ '@' => ["play macro", 'mo arg'],
+ '^' => ["left of page", 'pm'],
+ '0' => '^',
'$' => ["right of page", 'pm'],
'#' => ["rev. find word", 'pm'],
'*' => ["find word", 'pm'],
- #'+'
- #'`'
- '^^'=> ["last tab"],
- '?' => ["find rev.", 'pm arg modec'],
- '/' => ["find", 'pm arg modec'],
-
- 'a' => ["add bookm$sign{_}ark"],
- 'A' => ["toggle bookm$sign{_}ark$sign{_}ed"],
- '^a'=> ["increment url nr"],
- 'b' => ["to buffer"],
- 'B' => ["list buffers"],
+ '+' => 'zi',
+ '-' => 'zo',
+ '^^'=> ["last tab", 'po'],
+ '?' => ["find rev.", 'pm args modec'],
+ '/' => ["find", 'pm args modec'],
+ '[' => ["focus forw$sign{_}ard", 'me arg mode['],
+ ']' => ["focus back", 'me arg mode]'],
+ ':' => ["comm$sign{_}and line mode", 'mo args'],
+ ';' => ["extend$sign{_}ed hint$sign{_}s mode", 'me arg args mode;'],
+ "'" => ["jump to mark", 'pm'],
+ '`' => "'",
+
+ 'a' => ["add bookm$sign{_}ark", 'mo args'],
+ 'A' => ["toggle bookm$sign{_}ark$sign{_}ed", 'mo'],
+ '^a'=> ["incr$sign{_}em$sign{_}ent url nr", 'cp'],
+ 'b' => ["to buffer", 'po args'],
+ 'B' => ["list buffers", 'ci'],
'^b'=> ["page up", 'pm'],
- '^c'=> ["stop loading"],
- 'd' => ["close tab"],
- 'D' => ["close left tab"],
- #'^d'
- #'^u'
+ '^c'=> ["stop loading", 'co'],
+ '^d'=> ["scroll down", 'pm'],
+ 'd' => ["close tab", 'co'],
+ 'D' => ["close tab left$sign{_}ward$sign{_}s", 'co'],
+ 'i' => ["caret mode", 'mv'],
'^i'=> 'L',
'^e'=> 'j',
- 'f' => ["quick$sign{_}hint mode", 'arg'],
- 'F' => ["f in tab", 'arg'],
+ 'f' => ["quick$sign{_}hint mode", 'cp args'],
+ 'F' => ["f in tab", 'mi args'],
'^f'=> ["page down", 'pm'], # spacebar
- 'g' => ["extra cmds", 'me modeg'],
+ 'g' => ["extra cmds", 'me modeg arg'],
'G' => ["last/% line", 'pm'],
- '^g'=> ["file name"],
+ '^g'=> ["file name", 'ci'],
'h' => [$sign{left}, 'pm'],
- 'H' => ["page back"],
+ 'H' => ["page back", 'cp'],
'j' => [$sign{down}, 'pm'],
'k' => [$sign{up}, 'pm'],
'l' => [$sign{right}, 'pm'],
- 'L' => ["page forw$sign{_}ard"],
- 'M' => ["mark url", 'arg'],
- 'm' => ["mark line", 'arg'],
+ 'L' => ["page forw$sign{_}ard", 'cp'],
+ 'M' => ["mark url", 'mo arg'],
+ 'm' => ["mark line", 'mo arg'],
'n' => ["find next", 'pm'],
'N' => ["find prev$sign{_}ious", 'pm'],
'^n'=> 'gt',
- 'o' => ["open", ''],
- 'O' => ["alter url"],
+ 'o' => ["open", 'cp'],
+ 'O' => ["alter url", 'cp'],
'^o'=> 'H',
- 'p' => ["open pasted url"],
- 'P' => ["p in tab"],
+ 'p' => ["open pasted url", 'cp'],
+ 'P' => ["p in tab", 'mi'],
'^p'=> 'gT',
- 'q' => ["record macro", 'arg'],
- 'r' => ["reload page"],
- 'R' => ["reload uncach$sign{_}e$sign{_}d"],
- 't' => ["tab open new"],
- 'T' => ["tab open curr$sign{_}ent"],
- '^v'=> ["pass single", 'arg'],
- 'u' => ["restore closed tab"],
- 'y' => ["copy url"],
- 'Y' => ["copy select$sign{_}ion"],
+ 'q' => ["record macro", 'mv arg'],
+ 'r' => ["reload page", 'co'],
+ 'R' => ["reload uncach$sign{_}e$sign{_}d", 'cp'],
+ 't' => ["tab open new", 'mi'],
+ 'T' => ["tab open curr$sign{_}ent", 'mi'],
+ '^v'=> ["pass single", 'co arg'],
+ '^u'=> ["scroll up", 'pm'],
+ 'u' => ["restore closed tab", 'mi'],
+ '^x'=> ["decr$sign{_}em$sign{_}ent url nr", 'cp'],
+ 'y' => ["copy url", 'mo'],
+ 'Y' => ["copy select$sign{_}ion", 'mo'],
'^y'=> 'k',
+ 'z' => ["zoom", 'ci modez arg'],
'Z' => ["quit", 'me modeZ arg'],
- '^z'=> ["pass throu$sign{_}gh"],
+ '^z'=> ["pass throu$sign{_}gh", 'mv'],
}, # normal mode
g => {
desc => 'extended commands (g)',
lead => 'g',
- '0' => ["first tab"],
- '$' => ["last tab"],
+ '0' => ["first tab", 'po'],
+ '$' => ["last tab", 'po'],
'^' => 'g0',
- 'b' => ["repeat buffer cmd"],
- 'B' => ["reverse gb"],
- 'i' => ["last input field"],
- '^g'=> ["file details"],
- 'g' => ["first line"],
- 'f' => ["view source"],
- 'F' => ["source extern$sign{_}al"],
- 'm' => ["repeat output"],
- 'n' => ["tabopen url mark", '', 'Go in New tab'],
- 'o' => ["open url mark"],
- 'P' => ["P inactive"],
- 'h' => ["open home$sign{_}page"],
- 'H' => ["tab with home$sign{_}page"],
- 'u' => ["parent dir$sign{_}ectory"],
- 'U' => ["site root"],
+ 'b' => ["repeat buffer cmd", 'po'],
+ 'B' => ["reverse gb", 'po'],
+ 'f' => ["view source", 'cp'],
+ 'F' => ["source extern$sign{_}al", 'mo'],
+ '^g'=> ["file details", 'ci'],
+ 'g' => ["first line", 'pm'],
+ 'h' => ["open home$sign{_}page", 'cp'],
+ 'H' => ["tab with home$sign{_}page", 'mi'],
+ 'i' => ["last input field", 'pm'],
+ 'n' => ["tabopen url mark", 'mi arg', 'Go in New tab'],
+ 'o' => ["open url mark", 'cp arg'],
+ 'P' => ["$sign{alias}P inactive", 'mi'],
+ 't' => ["next tab", 'po'],
+ 'T' => ["prev$sign{_}ious tab", 'po'],
+ 'u' => ["parent dir$sign{_}ectory", 'cp'],
+ 'U' => ["site root", 'cp'],
}, # mode g
+';' => {
+ desc => 'extended hints (;)',
+ lead => ';',
+
+ ';' => ["focus", 'pm'],
+ 'a' => ["save prompt", 'mo args'],
+ 'f' => ';o',
+ 'F' => ';t',
+ 'o' => ["open", 'cp'],
+ 'O' => ["open prompt", 'cp args'],
+ 's' => ["save", 'mo'],
+ 't' => ["open in tab", 'mi'],
+ 'T' => ["tab prompt", 'mi args'],
+ 'v' => ["view source", 'cp'],
+ 'w' => ["open in wind$sign{_}ow", 'mi'],
+ 'W' => ["wind$sign{_}ow prompt", 'mi args'],
+ 'y' => ["copy url", 'mo'],
+ 'Y' => ["copy text", 'mo'],
+}, # mode ;
+']' => {
+ desc => '(])',
+ lead => ']',
+
+ 'f' => ["next frame$sign{_}set", 'pm'],
+ ']' => ["open <q>next</q>", 'cp'],
+}, # mode ]
+
+'[' => {
+ desc => '([)',
+ lead => '[',
+
+ 'f' => ["previous frame$sign{_}set", 'pm'],
+ '[' => ["open <q>prev</q>", 'cp'],
+}, # mode [
+
+z => {
+ desc => 'zoom commands (z)',
+ lead => 'z',
+
+ 'i' => ["en$sign{_}large text", 'ci', 'Zoom In'],
+ 'm' => ["en$sign{_}large more", 'ci', 'Zoom More'],
+ 'o' => ["shrink text", 'ci', 'Zoom Out'],
+ 'r' => ["tinier text", 'ci', 'Zoom Reduce'],
+ 'z' => ["reset text size", 'ci', 'Zoom Zero'],
+ 'I' => ["zoom in", 'ci'],
+ 'M' => ["zoom more", 'ci'],
+ 'O' => ["zoom out", 'ci'],
+ 'R' => ["zoom out more", 'ci', 'Zoom Reduce'],
+ 'Z' => ["zoom reset", 'ci', 'Zoom Zero'],
+}, # mode z
+
Z => {
desc => 'quit commands (Z)',
lead => 'Z',
- 'Q' => ["quit no save"],
- 'Z' => ["quit save ses$sign{_}s$sign{_}ion"],
+ 'Q' => ["quit no save", 'mo'],
+ 'Z' => ["quit save ses$sign{_}s$sign{_}ion", 'mo'],
}, # mode Z
--- /dev/null
+<:
+use utf8;
+use strict;
+use warnings;
+no warnings 'qw'; # you know what you doing
+no warnings 'uninitialized'; # save some useless checks for more legible code
+
+our $VERSION = '1.0';
+
+our $ascii = 0;
+if (exists $get{ascii}) {
+ $ascii = $get{ascii} ne '0'; # manual override
+} elsif (defined $ENV{HTTP_ACCEPT_CHARSET}) {
+ $ascii = 1;
+ for (split q{,}, $ENV{HTTP_ACCEPT_CHARSET}) {
+ $ascii = 0, last if $_ eq '*' or m{utf-?8}i;
+ }
+}
+
+my $charset = $ascii ? 'us-ascii' : 'utf-8';
+my $ctype = "text/html; charset=$charset";
+$header{content_type} = $ctype;
+
+:><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+<head>
+<title>vimperator cheat sheet</title>
+<meta http-equiv="content-type" content="<:= $ctype :>">
+<link rel="stylesheet" type="text/css" media="all" href="base.css">
+<!--[if lte IE 6]><style> .help dl.legend dt {margin:0 0 1px} </style><![endif]-->
+<!--[if lte IE 7]><style> .help dl.legend dd {float:none} </style><![endif]--><:
+ my %styles = map {$_ => $_} qw(dark circus mono red terse);
+ our $style = exists $get{style} && $styles{$get{style}} || 'light';
+ printf(qq{\n<link rel="%s" type="text/css" media="all" href="%s" title="%s">},
+ $_ eq $style ? 'stylesheet' : 'alternate stylesheet', "$_.css", $_
+ ) for keys %styles;
+
+ our $showkeys = exists $get{keys} && $get{keys} ne '0';
+ print "\n<style> .no {visibility:hidden} </style>" unless $showkeys;
+ print "\n<style> .no, .alias {opacity:.5} </style>"
+ if $showkeys and $get{keys} eq 'ghost';
+:>
+<link rel="vcs" type="git" href="git://dev.shiar.nl/sheet">
+
+<script><!--
+function setmode(classname) {
+ // set style for each #rows>li>ul>li to display:none unless it matches classname
+ var showclass = classname ? ' '+classname+'(?!\\w)' : '^$';
+ var parentskip = /^keys/;
+ var row = document.getElementById('rows').firstChild;
+ do {
+ if (row.tagName == 'LI' && row.firstChild.tagName == 'UL'
+ && !row.firstChild.className.match(parentskip)) {
+ var el = row.firstChild.firstChild;
+ if (el) do {
+ if (el.tagName == 'LI') {
+ el.style.display = el.className.match(showclass) ? 'block' : 'none';
+ }
+ } while (el = el.nextSibling);
+ }
+ } while (row = row.nextSibling);
+
+ // update H2 to reflect the first part of a currently active (but hidden) H3
+ var h3s = document.getElementsByTagName('H3');
+ for (var i = 0; i < h3s.length; i++) {
+ if (h3s[i].parentNode.style.display != 'block') continue;
+ document.getElementsByTagName('H2')[0].innerHTML = h3s[i].firstChild.data;
+ }
+} // setmode
+//--></script>
+
+<body id="vimperator">
+
+<h1>Vimperator cheat sheet</h1>
+
+<h2>normal mode (default)</h2>
+
+<ul id="rows">
+
+<li class="row">
+ <ul class="keys omni">
+ <li class="mv" onclick="setmode()"><b>Esc</b> normal mode
+ <!-- not as static anymore, but never bothered; just see ^[ -->
+ </ul>
+</li>
+
+<:
+our %sign = (
+ arg => $ascii ? '.' : '·', # described as 'dot'
+ args => $ascii ? ':' : '⁚', # described as 'two dots'
+ alias => $ascii ? 'see: ' : '»',
+ up => $ascii ? 'up' : '▲',
+ right => $ascii ? 'right' : '▶',
+ down => $ascii ? 'down' : '▼',
+ left => $ascii ? 'left' : '◀',
+ sep => $ascii ? '*' : '•',
+ _ => exists $get{ascii} && !$ascii ? "\x{200b}" : '<wbr>',
+ # use the correct ZWNJ only when unicode is forced on
+ # default to use unofficial html for best support
+);
+
+use Shiar_Sheet::Keyboard;
+my $keys = Shiar_Sheet::Keyboard->new({do 'vimperator.inc.pl'});
+$keys->map($get{map}) or undef $get{map};
+$keys->print_rows($get{static});
+:>
+</ul>
+
+<hr>
+
+<div class="help">
+ <div class="left">
+ <dl class="legend legend-types">
+ <dt class="ci">info
+ <dd>Displays something without any permanent consequences.
+ <dt class="pm">motion
+ <dd>Move cursor, scroll window, focus buffer element.
+ <dt class="po">tab
+ <dd>Tab or window navigation/selection.
+ <dt class="co">buffer
+ <dd>Page interaction.
+ <dt class="cp">open
+ <dd>Browse to a location in the current tab.
+ <dt class="mi">tab open
+ <dd>Browse somewhere in a new tab.
+ <dt class="mo">browser
+ <dd>Other browser action.
+ <dt class="mv">mode
+ <dd>Enter a different mode.
+ <dt class="me">key cmd
+ <dd>Additional key commands (click for overview).
+ </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>key<:= $sign{args} :>
+ <dd>Commands with two dots require variable arguments afterwards.
+ </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
+ <:= exists $get{ascii} && 'forced ' :><em><:=
+ $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>
+
+<p class="footer">
+ <a href="http://sheet.shiar.nl/vimperator">sheet.shiar.nl<strong>/vimperator</strong></a>
+ <a href="git://dev.shiar.nl/sheet"><:= "v$VERSION" :></a>
+ created by Shiar <:= $sign{sep} :>
+ <a title="Licensed under the GNU Affero General Public License, version 3"
+ href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">AGPLv3</a> <:= $sign{sep} :>
+ last update <:
+ use Time::Format qw(time_format);
+ print time_format('yyyy-mm-dd', (stat 'vimperator.inc.pl')[9]);
+ :>
+</p>
+
+</html>