Last updated: November 28, 2018
There are a number of similar lists already, but they usually lack grouping and miss pointing out things that are of interest for the author of this one. So based on those lists and other sources here's another one, which actually might be the biggest so far.
The listing is followed by some critique, which obviously comes from personal views and experience, so don't expect to agree with everything in that section.
The description below is organized in nested lists with occasional notes, which might not be extremely accurate and neutral. The order at each level is alphabetical. The descriptions are often taken from corresponding websites and thus might be biased.
The categorization is: really Vi[m]-like applications in groups, similar applications that don't form big groups ("Other" category), applications that remind or can be configured to be somewhat Vi[m]-like.
When licenses are listed below, "GPL" means GPL of any version and "MIT" also means any kind of BSD/X Consortium license.
- Browsers (notes)
- E-mail related
- Editors (notes)
- File managers
- Music players and MPD-clients (notes)
- PDF-viewers
- Plugins
- Other
- With similar/configurable bindings
- Notes
- Some of the sources
Browsers
Graphical browsers
- Cream-Browser
A Vim-like lightweight Web browser with Vimperator interface.- WebKit and GTK+ · GPL · C
- looks abandoned
- dwb
Quite nicely done Vim-like browser, modulo some issues with memory.- WebKit and GTK+ · GPL · C
- author claimed to abandon it, but there is some activity
- jumanji
The idea behind jumanji is a Web browser that provides a minimalistic and space saving interface as well as an easy usage that mainly focuses on keyboard interaction like Vimperator does.- WebKit and GTK+ · MIT · C
- stale development
- luakit
Fast, small, WebKit based browser framework extensible by Lua.- WebKit and GTK+ · GPL · C + Lua
- qutebrowser
Qutebrowser is a keyboard-focused browser with a minimal GUI.- QtWebEngine and Qt5 · GPL · Python
- see bizarre claims about software development in their FAQ
- surf
Ultra-minimalistic Web browser.- WebKit and GTK+ · MIT · C
- supports XEmbed protocol (instead of tabs)
- process per tab
- Uzbl
Web interface tools which adhere to the unix philosophy.- WebKit and GTK+ · GPL · C and Python
- requires configuration (syntax wasn't really obvious)
- process per tab
- Vimprobable
A lean stand-alone web browser optimised for full keyboard control (inspired by Vimperator).- WebKit and GTK+ · MIT · C
- didn't have history and cookies (claimed that this is for security)
- vimb
Vim-like browser based on the WebKit engine and the GTK toolkit.- WebKit and GTK+ · GPL · C
- xombrero/xxterm
A minimalist's Web browser, which strives to be Vi-like for heavy keyboard users while maintaining traditional Web browser behavior.- WebKit and GTK+ · ISC · C
- stale development
Text browsers
They aren't all that Vim-like, but seem to be popular among Vim users, so deserve to be listed.
- lynx
Text Web browser.- GPL · C
- has Vi-like mode (
-vikeys
command-line option)
- Netrik
A simplistic text mode (character cell display) Web browser, similar to w3m or Lynx.- GPL · C
- stale development
- w3m
w3m is a text-based Web browser as well as a pager likemore' or
less'.- MIT · C
E-mail related
- mutt
Mutt is a small but very powerful text-based mail client for Unix operating systems.- curses or S-lang · GPL · C
- notmuch
E-mail indexer/framework, which provides plugin for Vim.- CLI · GPL · C
- sup
A console-based e-mail client for people with a lot of e-mail.- curses · GPL · Ruby
- wyrd
A text-based front-end to remind, a sophisticated calendar and alarm program.- curses · GPL · OCaml
Editors
- bvi
A display-oriented editor for binary files (hex editor).- curses · GPL · C
- bvi plus
Fork of bvi with more features.- curses · GPL · C
- elvis
A free Vi clone for Unix and other operating systems.- terminal · Clarified Artistic License · C
- ex-vi
The traditional vi editor, ported to modern Unix systems.- terminal · MIT · C
- Kakoune
Interactive only editor inspired by Vim.- ncurses · public domain · C++
- not really Vim-like judging by examples in the Readme
- neovim
Fork of Vim.- terminal · Vim's + Apache · C
- has several incompatibilities with Vim (like dropped command-line options, no interactivity on
:!
, see) - GUI is implemented in separate projects
- nvi
Vi reimplementation.- terminal · MIT · C
- nvi
Node.js Vi clone.- terminal · CoffeeScript
- looks abandoned
- pyvim
Pure Python Vim clone.- terminal · MIT · Python
- not sure how Vim-like it is
- spacemacs
An Emacs-based editor that draws heavily from Vim keybindings.- Emacs · GPLv3 · Emacs Lisp
- vile
Vi clone with multiple buffers and similar features from Emacs added.- terminal + X Window System + Windows · GPL · C
- Vim
The ubiquitous text editor.- lots of environments · Vim's · C
- vis
A Vim-like text editor.- terminal · ISC · C + Lua
- if I get it right, it's not really that Vim-like (e.g. lots of Lua is used) and is deliberately handicapped compared to Vim
- WinVi
Vi-like text and hex editor, which also tries to be Notepad compatible.- Windows · GPL · C
- stale development
- xvi
The smallest full-function Vi text editor clone.- terminal · Emacs license · C
- Yzis
A Vi/Vim engine that can be integrated in graphical applications.- Qt (for editor) · GPL and LGPL library · C++
- stale development
File managers
- jvifm
A try of implementing graphical Vi-like file manager in Java.- SWT · GPL · Java
- two-pane kind of interface
- abandoned
- lf
Terminal file manager, which is a clone of ranger.- curses · MIT · C
- noice
Small file browser.- curses · MIT · C
- very minimalistic
- ranger
A console file manager with Vi key bindings, includes application association guessing tool.- ncurses · GPL · Python
- Miller columns kind of interface
- rover
A small file browser that aims to be simple, fast and portable.- curses · public domain · C
- Vide
A graphical predecessor of vifm.- GTK+ · GPL · C
- see
buildable-version
branch and supplyCFLAGS=-std=gnu90
on modern GCC (C99 semantics of inline conflicts with GTK+1) if you want to try it out - abandoned many years ago
- vifm
File manager with Vi like keybindings/modes/options/commands/configuration, which also borrows some useful ideas from mutt.- curses · GPL · C
- single/two-pane kind of interface
Music players and MPD-clients
- cmus
Not so minimalistic terminal player.- curses · GPL · C
- herrie
Minimalistic player with curses interface.- curses · MIT or GPL (it depends) · C
- uses mplayer to play the music
- main controls aren't very Vi-like
- pms
Probably the most Vi-like music player (MPD client).- curses · GPL · C++
- is in constant rewrite process sometimes with very long pauses
- the database is presented as one long list
- Siren
A text-based audio player for Unix-like operating systems, inspired by cmus.- curses · ISC mostly · C
- vimpc
Client for mpd with Vi-like key bindings.- curses · GPL · C++
- using it wasn't very intuitive
- vimus
Terminal MPD client with Vim-like key bindings.- curses · MIT · Haskell
- vitunes
Console playlist/music database manager with Vi-like bindings.- curses · MIT · C
- uses mplayer to play the music
PDF-viewers
- apvlv
A PDF/DJVU/UMD/TXT viewer under Linux/WIN32, which tries to behave like Vim.- GTK+ · GPL · C++
- remember it being kinda raw, but usable
- zathura
A document viewer with plugin system.- GTK+ · Zlib license · C
- had troubles installing newer version, so using the old one
- search used to be one match at a time, later was changed to whole-document search, which is very slow on huge documents
Plugins
For Browsers
- jV, Vimperator, Pentadactyl, VimFx, Vimium, Vim Vixen, Tridactyl
Plugins for Firefox, Pale Moon, Basilisk.- Vimperator, Pentadactyl, Vimium, Vim Vixen are MIT; jV, VimFx are GPL · JavaScript (probably)
- Vimium, vimlike-smooziee, Vrome, ViChrome, cVim, Surfingkeys
Plugins for Chrome and Chromium.- MIT; Vrome is GPL · JavaScript/CoffeeScript
- if I get it right, they are nowhere near Vimperator/Pentodactyl, except maybe cVim
- VimOperate
Plugin for Opera.
For Eclipse IDE
- Eclim
Two-way integration between Eclipse IDE and Vim.- GPL · Java + VimL
- ExEdit
Pluging for running Ex command in Eclipse IDE.- GPL · Java
- Viable, viPlugin
Plugins for Eclipse IDE.- Proprietary · Java
- vimplugin
An attempt to use the Vim editor inside the Eclipse IDE.- SWT · GPL · Java
- might be outdated
- vrapper
Plugin for Eclipse IDE that supposedly preserves original keybindings.- GPL · Java
Miscellaneous
- CubicleVim
A COM Add-In to allow editing Microsoft Outlook messages.- MIT · Visual Basic
- FakeVim
Standard QtCreator plugin (the link is to the widget).- Qt · GPL · C++
- was quite good implementation compared to many others
- IDEAVim
IntelliJ IDEA Vim-like plugin.- GPL · Java
- jVi
NetBeans IDE Vim-like plugin.- MPL · Java
- one of the closest Vim-like emulation plugins, among those I've ever tried
- Melodactyl
Vim-like plugin for Sunbird.- MIT · JavaScript
- Muttator, Teledactyl
Vim-like plugins for Thunderbird.- MIT · JavaScript
- Sublime Six
Successor of Vintageous plugin for Sublime Text.- Proprietary · Python
- vibreoffice
LibreOffice plugin that adds Vim-like shortcuts and modality.- MIT · Visual Basic
- viemu
Plugins for Visual Studio, Xcode, Outlook, Word, SQL Server.- Proprietary
- tried it for Visual Studio, it wasn't bad, but it left me unimpressed (quite long time ago)
- viex
NetBeans IDE Vim-like plugin.- GPL · Java
- Vintage
Vim-like plugin for Sublime Text.- MIT · Python
- VintageEx
A rendition of Vim's command-line mode for Sublime Text 2.- MIT · Python
- previous incarnation of Vingageous
- Vintageous
Vintageous is a comprehensive vi/Vim emulation layer for Sublime Text 3.- MIT · Python
- README says that Vintageous has been discontinued and its successor is Sublime Six (not open source)
- Vim Mode
Plugin for Atom.- MIT · CoffeeScript
- Vimpulse, eVil, Viper, Vim Mode
Emacs plugins. - ViTunes
A Vim plugin that allows you to control iTunes.- MIT · VimL, Ruby, Objective-C
- VsVim
Vim emulation layer for Visual Studio.- Apache · F#
- XVim
Xcode plugin for Vim keybindings.- MIT · Objective-C
Other
- athame
Full vim for your shell (bash, zsh, gdb, python, etc).- terminal · GPL · C
- integrates into applications that provide command-line input and runs Vim in background to do the work.
- Blender
Blender is the free and open source 3D creation suite.- OpenGL · GPL · C, C++ and Python
- see this post
- cgdb
Console front-end to the GNU debugger.- ncurses · GPL · C
- less
Its controls are Vi-like.- terminal · GPL · C
- Kommand
AutoHotKey script, which provides cross-application Vim-like hot key solution. - ncdu
Disk usage browser.- ncurses · MIT · C
- newsbeuter
The Mutt of RSS feed readers.- curses · MIT · C++
- PIDA
An IDE that allows integration of Vim/Emacs as editor.- GTK+ · MIT · Python
- looks abandoned
- sc
Terminal spreadsheet editor.- curses · MIT · C
- sc-im
Improved version of sc.- curses · MIT · C
- Termite
A keyboard-centric terminal.- GTK+ and VTE · GPL · C++
- tig
Text-mode interface for git.- curses · GPL · C
- TuDu
Vi-like TODO manager.- curses · GPL · C++
- vchatter
Vi-like jabber client.- C++
- stale development
- ViPaint
A modal, Vi like painting program.- JavaFX · GPL · Java
- vlrtt
Vim-like real-time tactics game.- MIT · Some scripting language
- VNote
A Vim-inspired note-taking application, which can also be used as Markdown editor.- Qt · MIT · C++ + WebStuff
- GNU Screen and tmux
These terminal multiplexers can be configured to use some Vi-like keys, they also have command-line mode.- terminal · Screen is GPL, tmux is MIT · C
- Screen has command classes, which allows implementing modes (e.g. resize mode)
- MonoDevelop, GNOME Builder and KomodoEdit
These seem to have (hard to find details) Vi-like editing mode. - SlickEdit, Kate and Editra
These have Vi-like editing mode. set -o vi
Enables Vi-mode in bash (you can see current mode after addingset show-mode-in-prompt On
to~/.inputrc
).bindkey -v
Enables Vi-mode in zshset editing-mode vi
in~/.inputrc
Enables Vi-like mode in all applications that use readline.
With similar/configurable bindings
Image viewers
- feh
An X11 image viewer aimed mostly at console users.- X Window System · MIT · C
- bindings can be configured to be like in Vi
- pim
Python image viewer with Vim-like keybindings.- GTK+ · MIT · Python
- sxiv
Simple X Image Viewer.- X Window System · GPL · C++
- some bindings are like in Vi
- vimiv
An image viewer with Vim-like keybindings.
- GTK3 · MIT · Python3
- xzgv
Image viewer with at least j/k mapped.- GTK+ · GPL · C++
Document viewers
- Evince
A document viewer for multiple document formats.- GTK+ · GPL · C and a bit of C++
- has h/j/k/l mappings
- MuPDF
A lightweight PDF and XPS viewer.- Various · AGPL · C
- bindings are relatively Vi-like
- Okular
A universal document viewer developed by KDE.- KDE · GPL · C++
- supports h/j/k/l
Window managers
- euclid-wm
Window manager with kind of Vim-like default mappings.- X Window System · MIT · C
- howm
A lightweight, X11 tiling window manager that is promises to behave like Vim (objects/motions/count).- X Window System · GPL · C
- tries to follow Unix-way too much (see next item)
- I used the word "promises" in the description because howm demonstrated severe issues with input processing when I gave it a try, drawing it useless
- i3
Tiling WM.- X Window System · MIT · C + Perl
- it seems to be possible to define Vim-like modes and there are some predefined ones
- wmii
A small, scriptable window manager, with a 9P filesystem interface and an acme-like layout.- X Window System · MIT · C
- has basic Vi bindings by default
Miscellaneous
- Abiword has Vi-like bindings.
- calcurse
Terminal calendar and scheduling application with some Vim-like keys by default.- curses · MIT · C
- CopyQ
Clipboard manager with advanced features, which claims "support for simple Vim-like editor and shortcuts".- Qt · GPL · C++
- ncmpc, ncmpcpp
More MPD clients, which are somewhat Vim-like.- curses · GPL · ncmpc in C and ncmpcpp in C++
- NetHack
Rougue-like game with h/j/k/l.- C
- rekonq
A Web browser for KDE based on WebKit. Has basic Vi-like keys.- KDE + WebKit · GPL · C++
- looks abandoned
- rexima
Vi-like audio-mixer alternative to alsamixer.- curses · GPL · C
- rtv
Reddit terminal viewer.- curses · MIT · Python
- urxvt
- X Window System · GPL · C++ + Perl
- looks like it's possble to make it somewhat Vim-like (scrollback)
- WeeChat
IRC client.- curses · GPL · C
- bindings can be configured to be like in Vi
- see weechat-vimode
- xpdf
Can be configured to be somewhat Vi-like (see).- X Window System and Motif · GPL · C++
- There are patches for making some applications Vim-like:
- DuckDuckGo, GitHub, gmail, and HabraHabr Web interfaces
Somewhat Vi-like, but they do conflict with Vim-like browsers/plugins, which makes them significantly less useful.
Notes
Common notes
A lot of the listed software share the same set of issues with regard to emulation of Vi[m]-like features. The most important ones that cause inconvenience for seasoned Vim users are below.
These are the things, which ideally should be addressed in any Vi[m]-like software. Languages and licenses (there is only a fraction of proprietary software) are listed above so that people with relevant skills or no skills and desire to acquire them could help the projects they like. The contributions shouldn't be limited to these things, but they can be a start.
Combinations with control key
Authors usually forget about these in GUI applications, but some should be handled explicitly in terminal ones too. Here are the most commonly unimplemented shortcuts:
- Control+[ – should be treated like Escape
- Control+H – should behave as Backspace
- Control+C – usually makes sense to treat it as Escape
- Control+M / Control+J – should behave as Enter
- Control+P / Control+N – should go up/down or forward/backward
- Control+I / Control+O – can go forward/backward in history
Processing of key sequences
Some applications/plugins treat key sequences in command (that is Normal) mode differently compared to Vim. Prefixes of unmatched key sequences should be discarded automatically without requiring the user to press Escape (in some cases it only Backspace worked).
Search origin
The search (including when user presses n or N) should account for current position in the document/webpage, not the position of the last match found.
Notes on browsers
Unfortunately almost all of the enumerated browsers suffer from the same huge problem: WebKit. Even though browser interfaces are lightweight, this hog-like web-engine ruins everything by consuming tremendous volumes of the memory. Jokes about Firefox using too much memory couldn't be more wrong today. This gets even worse if you realize that this behaviour is by design and there is effectively no means to control memory consumption whatsoever (last time I checked, the only API method for this could free several hundred Kibibytes), compared to flexible configuration of Gecko (and hopefully Servo in the future if it will work properly at some point). So be very skeptical when authors of those browsers say that they are "fast", "small" and "lightweight", they just can't be such as long as they are running on WebKit. Of course it's not entirely fault of WebKit developers, the content of the modern Web is the reason number one, but WebKit developers don't really seem to care too much either (otherwise there would be means of controlling consumption of resources).
Browsers that run different tabs in different processes are creating even more issues. This inevitably leads to somewhat slower performance (due to address space switches, page faults and unshared objects of previously visited pages) and bigger memory consumption (heap isn't shared and this is where lots of small objects related to pages reside, which can't even be deduplicated between processes). This can be partially addressed by limiting number of processes or using smarter architecture (Firefox developers seem to be going this way).
Another issue you could have noticed is that most of the browsers are basically the same... Authors don't even bother providing different description and I'm not sure whether they can, this is how similar the browsers (actually browser interfaces) are. There isn't much point in having that many equally undermaintained and so much similar browsers. One can get an impression that authors of new such browsers have no idea about existing ones. It's sad to see quite a lot of efforts being spread among too many separate projects.
Most of the browsers have the same issues with blocking ads and keyboard navigation. It's hard to do this right in general, so feel free to blame those who put tons of JavaScript on pages that are meant to be simple (if you're a Web-developer and want to do a good job for Internet users, take my advise and use this and/or this site as your ideal, not that scroll-based thing with huge background animations and alike stuff that make Web harder to use).
Notes on editors
Some of the projects were created just to rewrite the code in some particular language which their author knows, the others are here to make stuff "modern", "define the future", "bring something into 21 century" (we're only 16% in it, but they already know what to do...), <put your favourite senseless phrase here> (and if you don't have any, go visit some corporate sites and pick one there, the first page you see will be full of them more often than not).
Some alternative editors do have interesting capabilities, but the drawbacks (in form of missing features or completely incompatible ones) usually outweigh those advantages for long term Vim users (that is if they took time to learn what Vim has to offer, otherwise the difference won't be that pronounced).
Notes on music players
As you can see, authors of this kind of software like to do very similar applications too. Unfortunately those that are more original and useful get abandoned faster...
It seems like all of them are missing integration with external tools. One might want to open a file manager or terminal at current location or process selected files with another application, haven't seen means for this in players I tried. UPD: @juef notes that cmus can do this.
Some of the sources
Setup a Vim-like desktop environment on ArchLinux forum.
My list of applications with Vi keybindings on Reddit.
Vim movement on other programs on StackOverflow.
Vim-like applications on HabraHabr (in Russian).
@juef provided several titles.
Comments on this post and on related reddit thread.
There were several other lists, links to which weren't saved.