Need help with ideavim?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

6.0K Stars 607 Forks GNU General Public License v2.0 4.6K Commits 3 Opened issues


Vim emulation plugin for IDEs based on the IntelliJ Platform

Services available


Need anything else?

Contributors list



Official JetBrains Project Contributions welcome Downloads Rating Version Gitter Twitter

IdeaVim is a Vim emulation plugin for IntelliJ Platform-based IDEs.

Contact maintainers:


IntelliJ IDEA, PyCharm, CLion, PhpStorm, WebStorm, RubyMine, AppCode, DataGrip, GoLand, Rider, Cursive, Android Studio and other IntelliJ platform based IDEs.


  • IdeaVim can be installed via

    Settings | Plugins
    . See the detailed instructions.
  • Use

    Tools | Vim Emulator
    in the menu to enable or disable emulation.
  • Use the

    file as an analog of
    (learn more). The XDG standard is supported, as well.
  • Shortcut conflicts can be resolved by using:

    • On Linux & Windows:
      File | Settings | Editor | Vim
      File | Settings | Keymap
    • On macOS:
      Preferences | Editor | Vim
      Preferences | Keymap
    • Regular Vim mappings in the

Get Early Access

Would you like to try new features and fixes? Join the Early Access Program and receive EAP builds as updates!

  1. Click the IdeaVim icon icon in the status bar |
    Early Access Program
    Subscibe to EAP

Or subscribe to EAP updates manually:

  1. Open
    Settings | Plugins
  2. Click the gear icon :gear:, select
    Manage Plugin Repositories
    , and add the following url:

See the changelog for the list of unreleased features.

It is important to distinguish EAP builds from traditional pre-release software. Please note that the quality of EAP versions may at times be way below even usual beta standards.

You can always leave your feedback with: * @IdeaVim in Twitter * Bug tracker

Summary of Supported Vim Features

Here are some examples of supported vim features and commands:

  • Normal / insert / visual / select / etc. modes
  • Motion / deletion / change / window / etc. commands
  • Key mappings
  • Marks / Macros / Digraphs / Registers
  • Some set commands
  • Full Vim regexps for search and search/replace
  • Vim web help
  • ~/.ideavimrc
    configuration file

Emulated Vim plugins:

  • vim-easymotion
  • NERDTree
  • vim-surround
  • vim-multiple-cursors
  • vim-commentary
  • argtextobj.vim
  • vim-textobj-entire
  • ReplaceWithRegister
  • vim-exchange
  • vim-highlightedyank
  • vim-paragraph-motion
  • vim-indent-object

See also:


  • ~/.ideavimrc
    • Your IdeaVim-specific Vim initialization commands
Example (click to see)
""" Map leader to space ---------------------
let mapleader=" "

""" Plugins  --------------------------------
set surround
set multiple-cursors
set commentary
set argtextobj
set easymotion
set textobj-entire
set ReplaceWithRegister

""" Plugin settings -------------------------
let g:argtextobj_pairs="[:],(:),<:>"

""" Common settings -------------------------
set showmode
set so=5
set incsearch
set nu

""" Idea specific settings ------------------
set ideajoin
set ideastatusicon=gray
set idearefactormode=keep

""" Mappings --------------------------------
map <leader>f <plug>(easymotion-s)
map <leader>e <plug>(easymotion-f)

map <leader>d <action>(Debug)
map <leader>r <action>(RenameElement)
map <leader>c <action>(Stop)
map <leader>z <action>(ToggleDistractionFreeMode)

map <leader>s <action>(SelectInProjectView)
map <leader>a <action>(Annotate)
map <leader>h <action>(Vcs.ShowTabbedFileHistory)
map <s-space> <action>(GotoNextError)

map <leader>b <action>(ToggleLineBreakpoint)
map <leader>o <action>(FileStructurePopup)


Suggested options (click to see)

Here is also a list of the suggested options from defaults.vim

" Show a few lines of context around the cursor. Note that this makes the
" text scroll if you mouse-click near the start or end of the window.
set scrolloff=5

" Do incremental searching.
set incsearch

" Don't use Ex mode, use Q for formatting.
map Q gq

You can read your

file from
with this command:
source ~/.vimrc

Also note that if you have overridden the

JVM option, this will affect where IdeaVim looks for your
file. For example, if you have
then IdeaVim will source
instead of

Alternatively, you can set up initialization commands using XDG standard. Put your settings to


Emulated Vim Plugins

See doc/

Executing IDE Actions

IdeaVim adds various commands for listing and executing arbitrary IDE actions as Ex commands or via

command mappings:

Executing actions:

  • :action {action_id}
    • Execute an action by
      . Works from Ex command line.
  • ({action_id})
    • For the mappings you can use a special
       keyword. Don't forget the parentheses.
    • E.g.
      map gh (ShowErrorDescription)
      <- execute hover on
    • :warning: Mappings to
       don't work with 
      . If you know the case when it's needed, please let us know.

Finding action ids:

  • IJ provides

    IdeaVim: track action Ids
    command to show the id of the executed actions. This command can be found in "Search everywhere" (double
    "Track action Ids" Details (click to see) track action ids
  • :actionlist [pattern]
    • Find IDE actions by id or keymap pattern (E.g.
      :actionlist extract
      :actionlist )
" Map \r to the Reformat Code action
:map \r (ReformatCode)

" Map d to start debug :map d (Debug)

" Map \b to toggle the breakpoint on the current line :map \b (ToggleLineBreakpoint)

Some popular actions:
QuickJavaDoc - Quick Documentation (not only for java, all languages)
ShowErrorDescription - Show description of the error under the caret (cursor hovering)
QuickImplementations - Quick Definition

:gem: Contributing

The power of contributing drives IdeaVim :muscle:. Even small contributions matter!

See to start bringing your value to the project.


See for a list of authors and contributors.

IdeaVim tips and tricks

  • Use the power of IJ and Vim:

    • set ideajoin
      to enable join via the IDE. See the examples.
    • Make sure
      is enabled for
      to enable native IJ insertion in Vim.
    • Sync IJ bookmarks and Vim marks:
      set ideamarks
    • Check out more ex commands.
  • Use your vim settings with IdeaVim. Put

    source ~/.vimrc
  • Control the status bar icon via the


  • Not familiar with the default behaviour during a refactoring? See the


Some facts about Vim

Let’s relax and have some fun now! Here are a few things we've found interesting during development and would like to share with you.

  • There are no such commands as

    , or
    . For example,
    is not a separate command for deleting the line, but a
    command with a
    Wait, but there isn't a
    motion in Vim! That’s right, and that’s why Vim has a dedicated set of commands for which it checks whether the command equals to motion and if so, it executes
    motion instead.
    is an interesting motion that isn't even documented in vi, and it refers to the current line. So, commands like
    , and similar ones are simply translated to
    , etc. Here is the source of this knowledge.
  • x
    , and
    are not separate commands either. They are synonyms of
    , and
    , respectively. Here is the full list of synonyms.
  • Have you ever used

    ? Don't even try.
  • A lot of variables that refers to visual mode start with two uppercase letters, e.g.

    . Some examples.
  • Other strange things from vi:

    • ":3" jumps to line 3
    • ":3|..." prints line 3
    • ":|" prints current line
  • Vim script doesn't skip white space before comma.

    F(a ,b)
    => E475.


IdeaVim is licensed under the terms of the GNU Public License version 2 or any later version.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.