From personal use

  • Ctrl-a/x switches between Gmail mailboxes
  • 1-key code repository search via map <F12> t code
  • color scheming
  • shift-esc to leave --IGNORE ALL KEYS-- mode
    • switch between ignore/ignore all with insert while already insert mode
  • Vimperator 3.1 upgrade (after Firefox 4.1 upgrade)
  • set! intl.accept_languages=fr,en,en-us to switch languages
  • set! network.proxy.socks_port=23457 to switch between multiple proxies without having to go through :preference
  • Vimperator3 upgrade (after Firefox 4 upgrade)
    • overall faster hint mode, faster gvim edition in textarea
    • changed set complete=sfl/autocomplete=false rather set noautocomplete/gui=tabs
      • make sure that this is actually coherent with the configuration file
    • note that focus in textarea does properly follow the cursor
      • e.g. editing a page of the wiki does properly focus on the bottom
    • generated a backup of configurations files vimperator_20110407.tar
    • problems after :restart
      • the values set before were not saved
      • autocmd were not loaded (had to source ~\_vimperatorrc.local)
        • source in Vimperator2 accepted the full path but now doesn't
        • correcting the config file _vimperatorrc get overwritten by mkv!
        • the fullscreen autocmd does not work anymore, but the new interface makes it ok
  • exporting the list of opened tabs to a wiki list
    • js var tabs_string = ""; for each (var tab in tabs.get() ) { tabs_string += "\n* [["+tab.toString()+"]]"; } util.copyToClipboard(tabs_string);
      • not proper format yet for tab_number,title,URL
      • does not discard the first two tabs
    • printTabs.vimp by gkatsev
  • w '/home/images_persons/test.jpg' : (aka write or save as) saves the displayed picture to the specific path
    • used for social network visualization (cf Person and Processing)
    • could be improve with a variable with a path but can't seem to make it work
  • liberator://help/options#'sanitizeitems' : allow to clear the history and other personal lists
  • :map <c-f> :js alert("noob, use / instead!"); : forbid old binding and suggest new one
  • multi-parameter search
    • js commands.addUserCommand(['myVeryOwnSearch'], 'Special Search Description', function(args) { let title = args.shift(); liberator.execute('tabopen http://www.google.fr/search?tbs=bks:1&tbo=p&q=' + args.join(' ') + '+intitle:"' + title + '"'); }, { argCount: '+'}); shared by zong_sharo on freenode/#vimperator
      • based on my Google Books example
  • gnM : load VLC HTTP interface
    • use vlc --help and vlc --intereact to force back the widget interface when the HTTP interface is not enough
      • for example to repair an AVI index
    • consider interesting mapping, macros, log analysis
    • http://wiki.videolan.org/Web_Interface
    • integrated my favorite radio streamings
  • :b keyword keyword (...) <tab> : jump through tabs by their title name
  • frameonly : display only the current frame
    • very practical for wiki URL yanking which doesn't support frames properly
  • silent !gvim _vimperatorrc : edit your Vimperator configuration file through gvim
    • cd to jump to your homedir might be required first
  • set ignorecase : to ignore case during text searches
  • F11 : switch to fullscreen mode
    • Firefox browser.fullscreen.autohide to false in order to keep the tabs visible
    • use autocmd (as :set guioptions doesn't work) to display of the status bar, see also my autocmd section
  • :tabm 0 : move the current tab to the first position
  • :tabm [N] : move the current tab after the Nth tab
    • see also my { and } bindings to bump the tab as the first/last
  • [[ / ]] : jump to the previous / next page
  • C-a / C-x : increment / decrement the last number of an URL
  • gi<S-Insert> : select the first input/textarea and paste the content of ClipBoard in it
  • :mkv! : force the saving of the configuration file
    • warning, some information like keywords or autocmd are not stored in this file

From discussions on #vimperator (on Freenode)

  • :viusage : list of all available commands.
  • liberator.open() to load a url
  • <CR> in a script to force a carriage return ([enter])
  • liberator.buffer.getCurrentWord() to get the selected portion of the buffer
  • encodeURIComponent() prepare a string to be part of a complete URI (escaping spaces, etc)
  • editing my pmwiki thanks to one key
    • au LocationChange .* unmap e
    • # reading about mapleader in the help and using <Leader>e for that wiki editing map ?!
    • au LocationChange wiki map e :js liberator.open(buffer.URL + "?action=edit")<CR>
  • :tabdetach
  • C-i to edit the content of a textarea withint Gvim (excellent)
  • QuickMarks (with M-key to register go/gn-key to open)
  • :echo bookmarks.getKeywords()

Autocommands

  • force author value in PmWiki
    • note that it requires that EditForm does have the author field with the id='author'
    • autocmd DOMLoad .*fabien.benetou.fr.*action=edit js content.document.getElementById('author').value="Fabien";
  • force display of the status bar in fullscreen mode
    • autocmd Fullscreen .* :js document.getElementById("status-bar").setAttribute("moz-collapsed", false)
  • removing bloglines long URLs
    • autocmd LocationChange .*utm_source=.* js liberator.open(buffer.URL.replace(/\?utm_source.*/,""))
  • removing redirection banner from an ISP
    • autocmd LocationChange mac=00-mymac-00&url=.* js liberator.open(buffer.URL.replace(/.*url=/,""))
  • pre-filling the ISP reconnection form

Note that to make autocmd permanent you have to manually edit your _vimperatorrc.local file to load them at startup without getting it overwritten by mkvrc.

Own additional bindings

  • search the currently selection expression, most likely a function name or an object, and search instances in Google Code Search
  • append the content of the clipboard the selected text on the current tab with URL+title (cf ww) to the current monthly without notes page, add the month and year
    • @m (since @p is already used to search again for the last person searched)
    • note that it is currently not saved (have to be done again after each start)
  • search for the currently selected expression in my library in Google books
  • search for the currently selected expression with the brain keyword defined search
    • map \( :js liberator.open("brain "+buffer.getCurrentWord(),liberator.NEW_TAB);<CR>
  • search with the person keyword defined search
    • map \> :t person
    • @p : plays a macro that re-open the last searched person
  • search with the brain keyword defined search
    • map = :t brain
  • open your homedir in the browser
    • map \, :t e:\\home<cr>
  • one key mapping to jump and search in your most important webpage(s)
    • map \\ gn1/ / map \| gn2/
    • here, own wiki(s)
    • note that as Im using Tab Utilities those 2 tabs are now locked in the same position
      • each tab is refreshed about every morning or directly after page creation
    • one can not use f rather than / as f is limited to what is currently being displayed
  • bump the current tab as the first tab
    • map { :tabm 0<CR>
  • bump the current tab as the last tab
    • map } :tabm<CR>
  • generate a word cloud the currently highlighted text (replacing your yank buffer)
    • macro "w":"Ytwww.wordle.net/create<Return>gi<S-Insert><Tab><Return>"
  • open the sidebar with the Downloads (practical to read text with long lines, adjusting the length)
    • map <F8> :sidebar Downloads<CR>
  • switch proxy on/off
    • map <F9> :set! network.proxy.type=0<CR>
    • map <F10> :set! network.proxy.type=1<CR>
  • search for videos of the selected current words (using the vid keyword)
    • map v :js liberator.open("vid "+buffer.getCurrentWord());<CR>
    • map V :js liberator.open("vid "+buffer.getCurrentWord(),liberator.NEW_TAB);<CR>
  • format current page as a proper
    • pmwiki link : map ww :js if(!buffer.getCurrentWord()) { util.copyToClipboard("\n* [["+buffer.URL+"|"+buffer.title+"]] "); } else { util.copyToClipboard("\n* [["+buffer.URL+"|"+buffer.title+"]] "+buffer.getCurrentWord()); } <CR>
      • corrected to handle when no word is selected (seems to still fail...)
    • IRC link : map I :js util.copyToClipboard("("+buffer.title+" "+buffer.URL+" "+buffer.getCurrentWord()+")");<CR>
      • same problem
  • bind w[e/s/h/v/y...] for wiki related actions
    • edit the current (pm)wiki page
      • map we :js liberator.open(buffer.URL.replace(/[\?\#].*/,"")+"?action=edit");<CR>
      • now integrates wc too
    • remove action or anchor
      • map wc :js liberator.open(buffer.URL.replace(/[\?\#].*/,""));
  • translate the current page to English using Google Translation
    • map E :js liberator.open("tte "+buffer.URL)<CR>
  • load the selected word(s) in a tab (load urls or search keyword with the default search engine)
    • map l :js liberator.open(buffer.getCurrentWord());<CR>
    • map L :js liberator.open(buffer.getCurrentWord(),liberator.NEW_TAB);<CR>
  • shorten the URL of the current page
    • map S ... (see local config file)
  • watch a YouTube video in high quality format
    • map Q :js liberator.open(buffer.URL+"&fmt=18");<CR>
  • submit the 1st HTML form, very practical for pass protected pages
    • map s :js content.document.forms[0].submit();<CR>

QuickMarks

  • display current quick marks
    • map K :qmarks<CR>
  • export qmarks to a visual layout
    • eventually have it as an augmented reality object on-top of my current real keyboard (make a little Firefox/Vimperator marker, print it, put it nearby my keyboard and the augmented reality progam would display the action that each key would undertake in order to either or recall what each key does (useful and super cheap : paper+webcam)

Visual cheat sheets

To add

  • ~/vimperator.local script + other plugins with comments
  • liberator.commands.add(["pexec"], "Append the current selected to the command and execute it", function(args, special) { liberator.execute(args.join(" ")) });
  • change command names to link within the doc
    • example :b keyword keyword (...) <tab> : jump through tabs by their title name
    • use Vim to make a regex and change all commands to link to the doc
    • update the intermap to support the liberator:// format

Keywords

Actually those are not restricted to Vimperator and can be used in vanilla Firefox (moved to their dedicated page)

  • code : Code repository
    • http://fabien.benetou.fr/repository/?p=.git&a=search&h=HEAD&st=grep&s=%s
  • arxiv : arXiv.org Search
    • http://arxiv.org/find/all/1/all:+%s/0/1/0/all/0/1
  • quora : search for a related question or topic on quora
    • http://www.quora.com/search?q=%s
  • qt : display a specified topic on Quora
    • http://www.quora.com/%s
  • ngram : Google Ngram Viewer
    • http://ngrams.googlelabs.com/graph?content=%s
  • dbpedia : query to the SPARQL endpoint of DBpedia (structured information from Wikipedia)
    • http://dbpedia.org/sparql?query=%S
  • sep : Stanford Encyclopedia of Philosophy
    • http://plato.stanford.edu/search/searcher.py?query=%s
  • inmybooks : Google Books Own Library search, searches within my list of read books
    • http://books.google.com/books?uid=6723022777584282679&q=%s
    • based on inbook
    • see Google Books API to further automatize, in particular book addition
  • lyrics : Search LyricWiki
    • http://lyrics.wikia.com/Special:Search?search=%s&go=1&x=0&y=0
  • inbook : search within a book
  • meteo : Météo-France weather search by city name or area code
    • http://france.meteofrance.com/france/accueil/resultat?RECHERCHE_RESULTAT_PORTLET.path=rechercheresultat&query=%s&type=PREV_FRANCE&satellite=france
  • map : OpenStreetMap Nominatim Search
    • http://nominatim.openstreetmap.org/search?q=%s
  • etyen : myEtymology.com: English etymology
    • http://www.myetymology.com/english/%s.html
  • etyfr : myEtymology.com: French etymology
    • http://www.myetymology.com/english/%s.html
  • person : Person Search Results
    • http://self/wiki/Person/Person?action=search&q=group%3Dperson+%s
  • chat : search across discussion logs
  • gene : NCBI Genes DB
    • http://www.ncbi.nlm.nih.gov/sites/entrez?cmd=search&db=gene&term=%s
  • tws : twitter search
    • http://twitter.com/#search?q=%s
  • tw : twitter user
    • http://twitter.com/%s
  • film : megavideo real-time search from Collecta
    • http://www.collecta.com/#q=megavideo%20%s
  • pmwiki : PmWiki search
    • http://www.pmwiki.org/wiki?action=search&q=%s
  • man : UNIX man pages
    • http://unixhelp.ed.ac.uk/CGI/man-cgi?%s
  • brain : search across multiple personal wikis, discussion logs, repository, ...
    • misleading, to be renamed e.g. pim_search
    • using Sphinxsearch
    • http://www.google.com/search?num=100&hl=en&q=[+%s+site:fabien.benetou.fr+]
  • pubmed : search with PubMed
    • http://www.ncbi.nlm.nih.gov/sites/entrez?term=%s
  • rt : real-time search with Collecta
    • http://www.collecta.com/#q=%s
  • tongue : reverse dictionnary lookup (against the tip of the tongue effect)
    • http://www.onelook.com/?w=*&loc=revfp2&clue=%s
  • tte : translate to English
    • http://translate.google.com/translate?js=n&prev=_t&hl=en&ie=UTF-8&u=%s&sl=auto&tl=en&history_state0=
    • binded to E
  • news : my selected set of news by country code
    • http://newsmap.jp/#/b,m,n,t,w/%s/view/
    • works with country code like "fr" or "ca" (support multiple countries by separating them with "," for example "us,uk,fr,ca")
  • play : search YouTube playlists
    • http://www.youtube.com/results?search_type=search_playlists&search_query=%s
  • td : twitter search on "down" and they keyword
    • http://search.twitter.com/search?q=down+%s
  • page2rss : Page2RSS
    • http://page2rss.com/page?url=%s
  • citizendium : Citizendium search
    • http://en.citizendium.org/wiki/Special:Search?search=%s
  • sp : Scholarpedia search
    • http://www.scholarpedia.org/article/Special:Search?search=%s
  • geoip : GeoIP resolution from MaxMind
    • http://www.maxmind.com/app/locate_ip?ips=%s
  • tef : Google Translate, English to French
    • http://translate.google.com/translate_s?hl=en&q=%s&sl=en&tl=fr
  • tfe : Google Translate, French to English
    • http://translate.google.com/translate_s?hl=en&q=%s&sl=fr&tl=en
  • ms : Google Gmail search
    • http://mail.google.com/mail/#search/%s
    • works with keywords like** word to:email@domain.tld
  • vid : Google Video
    • http://video.google.com/videosearch?q=%s
  • veoh : Veoh
    • http://www.veoh.com/search/videos/q/%s
  • abv : Abbreviations
    • http://www.abbreviations.com/%s
  • tv : Google TimeView
    • http://www.google.com/views?q=%s+view:timeline
  • ut : YouTube
    • http://www.youtube.com/results?search_type=&search_query=%S
  • bt : IsoHunt
    • http://isohunt.com/torrents/?ihq=%s
  • se : Seedea
    • http://wiki.seedea.org/Content/Search?action=search&q=%s
  • radio : TopRadio
    • http://en.topradio.org/search?q=%s
  • isbn : ISBN db
    • http://isbndb.com/search-all.html?kw=%s
  • imdb : IMDB (Title only)
    • http://www.imdb.com/find?s=tt&q=%s
  • doi : DOI resolver
    • http://dx.doi.org/%s
  • img : Google Images
    • http://images.google.com/images?q=%s
  • we : Wikipedia English
    • https://secure.wikimedia.org/wikipedia/en/wiki/%s
  • wf : Wikipedia French
    • https://secure.wikimedia.org/wikipedia/fr/wiki/%s
  • wte : Wiktionary English
    • http://en.wiktionary.org/wiki/%s
  • wtf : Wiktionary French
    • http://fr.wiktionary.org/wiki/%s
  • isgd : is.gd
    • http://is.gd/create.php?longurl=%s

Transition to Pentadactyl

  • FAQ including why the split occured, the differences, etc
  • Does Pentadactyl import vimperator settings?, September 2010
  • util.copyToClipboard -> dactyl.clipboardWrite
  • overwrite quickmarks file with the previous one to get quickmarks back
  • mkpentadactylrc! to reformat the RC files properly
  • | has to be escaped (cf :help :bar) in order to be binded else it is considered as multiple commands on a line
  • links numbering in quickhint mode starts with the first visible link and is updated on display
    • Vimperator does not get updated and thus works well with GreaseMonkey mouseless autoscroll script
    • quickhint raises an event that GM can not catch, only availiable to chrome code

Upgrade from 1.2 to 2.0b2

  1. completion on commands is much better
    1. scripts are thus easier to make
  2. autocmd! to remove binds
    1. e for wiki edit
    2. google/bloglines escape mode
  3. liberator.option is undefined ( w pr wiki copying)
    1. content.document.title
  4. :set complete=hsfl (to have history again in completion)

Idea for improvement

  • log and diff the Marks used to see the changes of usage over time
  • Automatically load the PmWiki syntax file
    • :autocmd LocationChange .* :set editor=gvim\ -f
    • :autocmd LocationChange action=edit :set editor="gvim -f -c 'set syn=pmwiki'"
    • :autocmd LocationChange action=edit :set editor="vim -f -c 'set syn=pmwiki' -c 'colorsheme shine'" (faster to load, colorscheme isn't as nice as gvim though)
  • Is there a way to automatically edit a focused textarea in vim?
    • :autocmd LocationChange action=edit 2gi does not work as 2gi is not a command but a mapping
    • thus the trick is to record a macro qe2giq then execute it :play e
    • but... it still doesn't work as it plays the macro too early. Changing the event to DOMLoad messes up the loading.
  • make [[ and ]] "french" compatible
    • set nextpattern=(tab to complete the previous value)\\bSuivant\\b
      • then you can add Précédent, Precedent, ...
  • navigate amongst previous queries (add also to Keywords)
    • :tabopen search_engine <up key>
  • utility functions
    • io.writeFile()
    • util.copyToClipboard()
    • JSON.stringify()
  • bindings to email/SN/... the current page to a friend
    • t protocol:address?subject=title&content=liberator.buffer.getCurrentWord(),,,
    • see Delicious binding but improve it and do it at least for email
    • problem : vimperatorg mailto handling seems to not support subject thing (makes an url instead of mailto?)
    • example : tabopen MrX@gmail.com&subject=sth with spaces&text=blabla from http://url.com/path/
  • check ubiquity plugin if I decide to try ubiquity one day
  • control PDF viewer plugin
    • autoscroll with slowly increasing speed until preset max
      • pause when focus lost, restart when focus on (using autocmd?)
  • improve efficient usage
    • parse the history-command in order to detect commands (easy) and key pressed (hard?)
    • find non-used shortcuts from :help index
    • link to those rarely used ones in the documentation
  • map g{n,o}XY in order to go further than 1 key quickmarks (and thus make hierarchies, especially with multiple wikis)
  • make a utility function to clean URLs then call it in the different shortcuts used to yank formatted URLs

Alternatives

  • Vimprobable based on the WebKit engine (using GTK bindings).
  • Vimium for SRWare Iron based on Google Chrome based on the WebKit engine
  • Conkeror keyboard-oriented, highly-customizable, highly-extensible web browser based on Mozilla XULRunner, written mainly in JavaScript, and inspired by exceptional software such as Emacs and vi.
  • uzbl lightweight webkit browser following the UNIX philosophy - to do one thing and do it well.
  • luakit browser framework based on the WebKit web content engine and the GTK+ toolkit
    • using Lua language
  • jumanji based on the WebKit web content engine and the GTK+ toolkit
  • Dactyl branch from the Vimperator line
  • CLI equivalents
  • Weboob (Web Out Of Browsers) provides several applications to interact with a lot of websites.

See also


Note

My notes on Tools gather what I know or want to know. Consequently they are not and will never be complete references. For this, official manuals and online communities provide much better answers.