Skip to content

The ultimate list of which programs support Vim keybindings natively, or how they can be added with extensions.

License

Notifications You must be signed in to change notification settings

ATNewHope/vim-keybindings-everywhere-the-ultimate-list

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vim Keybindings Everywhere - The Ultimate List Tweet

<magic-marker-nbr-native> <magic-marker-nbr-extensions> OSS Lifecycle License

Contributors including these top contributors:

What is this list?

Once your fingers have learned to speak Vim, they do'nt not want to speak anything else! It's simply a very effective way of navigating, creating and editing text. Thus, it's natual that one would like to get Vim-like keybindings in as many programs we use as possible.

The intention of this collaborative list is to:

  • learn which programs/apps that you already use which you can enhance with Vim keybindings. Search in your browser with ctrl/cmd + f.
  • discover new programs that supports Vim keybindings. In the need for a new file manager? Why not get one that has Vim keybindings?
  • be up to date and alive -- add new programs and extensions as they evolve!

There are of course already lists like this one floating around on the internet (see Acknowledgments). While they are great, the issue is that they are not up to date with the latest developments. There are Vim-emulator add-ons being developed all the time! This is why this collaborative list was created.

(yes, technically it is vi-like keybindings we talk about here, but most people know and Google for vim, thus vim is used here instead of vi).

The Ultimate Vim Keybinding List

The following symbols are used with each list item to make it clearer what kind of Vim keybindings support exist

  • ✅ - built-in support (possibly via a setting)
  • ➕ - via addon/extension

Terminology:

  • TUI - Text User Interface

Tip: navigate this file easily by using GitHub's built-in markdown Table of Contents in the top left corner: ToC

General

  • vim-anywhere - spawn a vim buffer from any text input in the operating system.
  • tmux - the terminal multiplexer, superseding GNU Screen.
    • ~/.config/tmux/tmux.conf
       set-option -g status-keys vi		# Use Vi bindings in tmux command prompt.
       set-window-option -g mode-keys vi	# Use Vi bindings in copy and choice mode.
  • irssi - the popular IRC client.

Development

  • ipython - Interactive Python shell. It no longer uses readline for input, so it must be configured in the ipython profile ~/.ipython/profile_default/ipython_config.py itself (reference):
    • c.TerminalInteractiveShell.editing_mode = "vi"
  • GHCi - Interactive Haskell environment. It uses haskeline instead of readline. Put this in ~/haskeline:
    • editMode: Vi

Debuggers

  • cgdb - a curses interface on top of the GDB debuger with keybindings modeled after vim.
  • vimpdb - An integration of the python debugger pdb and vim.

E-Mail

  • Mutt - The vim of email, a TUI email client
  • NeoMutt - A fork of mutt, intendted to reignite the development.
  • Thunderbird
    • Muttator - Like Vimperator but for thunderbird.

File Management

  • vifm - TUI file manager with vi keybindings.
  • ncdu - ncurses disk usage explorer.

Music players

  • ncmpcpp - An ncurses client for mpd. The navigation can quite easily be made to behave like vim with some keyboard configurations.
    • ~/.config/ncmpcpp/bindings
      def_key "j"
        scroll_down
      def_key "k"
        scroll_up
      def_key "h"
        previous_column
      def_key "l"
        next_column
      def_key "ctrl-b"
        page_up
      def_key "ctrl-u"
        page_up
      def_key "ctrl-f"
        page_down
      def_key "ctrl-d"
        page_down
      def_key "g"
        move_home
      def_key "G"
        move_end
      def_key "n"
        next_found_item
      def_key "N"
        previous_found_item
      

PDF viewers

IDEs

News/RSS Readers

  • Newsboat - RSS/Atom reader with a TUI.
  • Newsbeuter - Unmaintained, see Newsboat./

Source Code Management

  • git - Nothing's better than the real deal. Tell git to use vim/nvim when editing commit messages, interactive rebase etc. by putting in your ~/.config/git/config:
    • [user]
          editor = vim
  • tig - Text interface for git. Works mostly like vim out of the box, but can be enhanced:
    • ~/.config/tig/config
      bind generic <Ctrl-f>   scroll-page-down
      bind generic <Ctrl-b>   scroll-page-up
      bind generic g move-first-line			# Move cursor to top.
      bind generic G move-last-line			# Move cursor to bottom.
      
      bind main B :toggle commit-title-graph		# Rebind G to B.
      bind main G move-last-line			# Move cursor to bottom.
      
  • hg/mercurical - Put in your ~/.config/hg/hgrc:
    • [ui]
          editor = vim

Shells

  • readline - Readline is a library used by many CLI programs to read input from users. By configuring readline to use vi key bindings, you automatically get it for programs like bash, irb, octave etc.. By default, readlines has Emacs-like keybindings but you can change that by putting this in your ~/.inputrc:
    •  set editing-mode vi
       set keymap vi-insert
      
  • Bash - The preferred method is to set Vi mode in ~/.inputrc via readline, as you will get Vi mode automatically in all programs using the library. However if you just want this for bash, put this in your bash startup file e.g. ~/.bashrc:
    • set -o vi
  • zsh - just put this in your ZSH startup file, most likely ~/.zshrc:
    • bindkey -v
  • fish - just add to your ~/.config/fish/config.fish (reference):
    • fish_vi_key_bindings
  • tcsh - put this in your ksh startup file e.g. ~/.kshrc (reference):
    • bindkey -v
  • ksh - put this in your ksh startup file e.g. ~/.kshrc:
    • set -o vi

System Tools

  • htop-vim - A patched version the htop interactive process viewer that has vim keybindings for navigation.
  • aptitude - ncurses interface for APT on Debian-derived Linux distros. The keybindings are already vim-like.

Text Editors

We know that Vi-clones/derivatives have Vi(m) keybindings so let's skip those here (Vim, NeoVim, vile, ...)

Web browsers

Contributing

This is a collaborative list -- please fork and make a pull request to add or improve the entries here! The initial contributions by the repo owner is limited to the tools he uses or knows of, so there is a lot of room for further additions here!

Please:

  • add links to references for configuration if you have any.
  • use XDG paths when possible.
  • set up the git pre-commit hook that updates the counts in the 2 badges by running:
    • $ git clone [email protected]:erikw/vim-keybindings-everywhere-the-ultimate-list.git
      $ cd vim-keybindings-everywhere-the-ultimate-list/
      $ git config core.hooksPath .githooks
  • It's okay to list deprecated or unmaintained software for the sake of completness, but let's put a strigke-through on them.

Acknowledgments

Hats off to the authors of these articles that helped kick-starting this list together with the author's own experiences: #1, #2, #3, #4.

About

The ultimate list of which programs support Vim keybindings natively, or how they can be added with extensions.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 100.0%