IdeaVim
Build
Tests
IdeaVim is a Vim emulation plugin for IDEs based on the IntelliJ platform. IdeaVim can be used with IntelliJ IDEA, PyCharm, CLion, PhpStorm, WebStorm, RubyMine, AppCode, DataGrip, GoLand, Cursive, and Android Studio.
Resources:
Installation
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 your IDE will work with its regular keyboard shortcuts.
Keyboard shortcut conflicts between the Vim emulation and the IDE can be resolved via "File | Settings | Editor | Vim Emulation", "File | Settings | Keymap" on Linux & Windows, and by "Preferences | Editor | Vim Emulation", "Preferences | Keymap" on macOS. They can also be resolved by key mapping commands in your ~/.ideavimrc file.
Get an Early Access
Would you like to try new features and fixes? Join the Early Access Program and receive EAP builds as updates! Add this URL to "Settings | Plugins | Browse Repositories | Manage Repositories": https://plugins.jetbrains.com/plugins/eap/ideavim
See the changelog for the list of hot unreleased features.
It is important to distinguish EAP from traditional pre-release software. Please note that the quality of EAP versions may at times be way below even usual beta standards.
Summary of Supported Vim Features
Supported:
Motion keys
Deletion/changing
Insert mode commands
Marks
Registers
Undo/redo
Visual mode commands
Some Ex commands
Full Vim regexps for search and search/replace
Key mappings
Macros
Digraphs
Command line and search history
Window commands
Vim web help
Emulated Vim plugins:
vim-surround
vim-multiple-cursors
Not supported (yet):
Jump lists
Various less used commands
See also:
Files
~/.ideavimrc
Your IdeaVim-specific Vim initialization commands
You can read your ~/.vimrc file from ~/.ideavimrc using this command:
source ~/.vimrc
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 affect where IdeaVim looks for your .ideavimrc file. For example, if you have -Duser.home=/my/alternate/home then IdeaVim will source /my/alternate/home/.ideavimrc instead of ~/.ideavimrc.
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:
set
Available extensions:
surround
Commands: ys, cs, ds, S
multiple-cursors
Commands: , , , g
Changes to the IDE
Undo/Redo
The IdeaVim plugin uses the undo/redo functionality of the IntelliJ platform, so the behaviour of the u and commands may differ from the original Vim. Vim compatibility of undo/redo may be improved in future releases.
Escape
Using in dialog windows remains problematic. For most dialog windows the Vim emulator is put into the insert mode with not working. You should use or 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 improvements.
Executing IDE Actions
IdeaVim adds two commands for listing and executing arbitrary IDE actions as Ex commands or via :map command mappings:
:actionlist [pattern]
Find IDE actions by name pattern
:action {name}
Execute an action named NAME
For example, here \r is mapped to the Reformat Code action:
:map \r :action ReformatCode
Contributing
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.
Development Environment
Fork IdeaVim on GitHub and clone the repository on your local machine.
Import the project from existing sources in IntelliJ IDEA 2018.1 or newer (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 8+ JDK as the Gradle JVM, leave other parameters unchanged
Run your IdeaVim plugin within IntelliJ via a Gradle task
Select "View | Tool Windows | Gradle" tool window
Launch "ideavim | intellij | runIde" from the tool window
Run IdeaVim tests via a Gradle task
Select "View | Tool Windows | Gradle" tool window
Launch "ideavim | verification | test" from the tool window
Build the plugin distribution by running ./gradlew clean buildPlugin in the terminal in your project root.
The resulting distribution file is build/distributions/IdeaVim-VERSION.zip
You can install this file using "Settings | Plugins | Install plugin from disk"
Authors
See AUTHORS.md for a list of authors and contributors.
License
IdeaVim is licensed under the terms of the GNU Public license version 2.