IdeaVim is a Vim emulation plug-in for IDEs based on the IntelliJ platform. IdeaVim can be used with IntelliJ IDEA, RubyMine, PyCharm, PhpStorm, WebStorm, AppCode, CLion, DataGrip, and Android Studio.
Use the IDE's plugin manager to install the latest version of the plugin. Start the IDE normally and enable the Vim emulation using "Tools | Vim Emulator" menu item. At this point you must use Vim keystrokes in all editors.
If you wish to disable the plugin, select the "Tools | Vim Emulator" menu so it is unchecked. At this point IDE will work with its regular keyboard shortcuts.
Keyboard shortcut conflicts between the Vim emulation and the IDE can be resolved via "File | Settings | Vim Emulation", "File | Settings | Keymap" and key mapping commands in your ~/.ideavimrc file.
Summary of Supported Vim Features
- Motion keys
- Insert mode commands
- Visual mode commands
- Some Ex commands
- Some :set options
- Full Vim regexps for search and search/replace
- Key mappings
- Command line and search history
- Window commands
- Vim web help
Emulated Vim plugins:
Not supported (yet):
- Jump lists
- Various less used commands
- Your IdeaVim-specific Vim initialization commands
You can read your ~/.vimrc file from ~/.ideavimrc using this command:
Note, that IdeaVim currently parses ~/.ideavimrc file via simple pattern matching, see VIM-669 for proper parsing of VimL files.
Also note that if you have overridden the
user.home JVM option, this will
will affect where IdeaVim looks for your .ideavimrc file. For example, if you
-Duser.home=/my/alternate/home then IdeaVim will source
/my/alternate/home/.ideavimrc instead of
Emulated Vim Plugins
IdeaVim extensions emulate some plugins of the original Vim. In order to use IdeaVim extensions, you have to enable them via this command in your ~/.ideavimrc:
- Emulates vim-surround
Changes to the IDE
The IdeaVim plugin uses the undo/redo functionality of the IntelliJ platform,
so the behaviour of the
<C-R> commands may differ from the original
Vim. Vim compatibility of undo/redo may be improved in the future releases.
See also unresolved undo issues.
<Esc> in dialog windows remains problematic. For most dialog windows
the Vim emulator is put into the insert mode with
<Esc> not working. You
<C-[> instead. In some dialog windows the normal mode is
on by default. The usage of the Vim emulator in dialog windows is an area for
See also unresolved escape issues.
Executing IDE Actions
IdeaVim adds two commands for listing and executing arbitrary IDE actions as
Ex commands or via
:map command mappings:
- Find IDE actions by name pattern
- Execute an action named
- Execute an action named
For example, here
\r is mapped to the Reformat Code action:
:map \r :action ReformatCode<CR>
Where to Start
In order to contribute to IdeaVim you should have some understanding of Java.
See also these docs on the IntelliJ API:
You can start by picking relatively simple tasks that are tagged with #patch_welcome in the issue tracker.
Fork IdeaVim on GitHub and clone the repository on your local machine.
Import the project from existing sources in IntelliJ IDEA 15+ (Community or Ultimate) using "File | New | Project from Existing Sources..." or "Import Project" from the start window.
In the project wizard select "Import project from external model | Gradle"
Select your Java 6+ JDK as the Gradle JVM, leave other parameters unchanged
Create a new plugin run configuration using "Run | Edit Configurations | New Gradle Configuration" and run it in order to launch IntelliJ with the compiled version of the IdeaVim plugin.
Select your project as the Gradle project
Enter "runIdea" as the task to run
Create and run a new configuration for running tests by right-clicking on the "test" folder in the project structure and selecting "Run All Tests".
Build the plugin distribution by running
./gradlew clean buildPluginin the terminal in your project root.
The resulting distribution file is build/distributions/IdeaVim-VERSION.zip
You can install this file file using "Settings | Plugins | Install plugin from disk"
See AUTHORS.md for a list of authors and contributors.
IdeaVim is licensed under the terms of the GNU Public license version 2.