explaingit

jetbrains/ideavim

10,195KotlinAudience · developerComplexity · 2/5Setup · easy

TLDR

An official JetBrains plugin that adds Vim keyboard controls to IntelliJ IDEA, PyCharm, WebStorm, GoLand, and Android Studio, use Vim muscle memory and map IDE actions to Vim keys without leaving your IDE.

Mindmap

mindmap
  root((repo))
    What it does
      Vim keys in JetBrains
      Mode-based editing
      IDE action mapping
    Supported IDEs
      IntelliJ IDEA
      PyCharm
      WebStorm
      GoLand
    Vim Features
      Normal and visual mode
      Macros and marks
      Regex search replace
      ideavimrc config
    Community Plugins
      Surround objects
      Multiple cursors
      Easy motion
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Use Vim keyboard shortcuts and editing modes inside IntelliJ IDEA or PyCharm without switching to a different editor.

USE CASE 2

Map a Vim key combination to trigger JetBrains IDE actions like rename, run debugger, or open file structure.

USE CASE 3

Port your existing .vimrc configuration to an .ideavimrc file to get your custom keybindings inside JetBrains IDEs.

USE CASE 4

Add Vim surround, commentary, or multiple cursor functionality to a JetBrains IDE via IdeaVim community plugins.

Tech stack

KotlinJavaIntelliJ Platform

Getting it running

Difficulty · easy Time to first run · 5min

In plain English

IdeaVim is an official JetBrains plugin that brings Vim keyboard controls into JetBrains IDEs such as IntelliJ IDEA, PyCharm, GoLand, WebStorm, and Android Studio. Vim is a text editor with a keyboard-driven control system where you switch between modes (like a normal mode for navigating and an insert mode for typing) rather than using menus or a mouse. IdeaVim makes those same keyboard habits work inside JetBrains tools without requiring you to leave your existing IDE. Once installed from the plugin marketplace, you can turn Vim mode on or off from the Tools menu. The plugin supports the main Vim features developers rely on: normal, insert, visual, and command modes, movement and text manipulation commands, macros, marks, registers, Vim-style search and replace with regular expressions, and configuration via an .ideavimrc file that works like the standard Vim configuration file. You can even load your existing .vimrc settings from within .ideavimrc. One distinctive feature is the ability to trigger IDE actions directly from Vim key mappings. For example, you can map a key combination to run the debugger, rename a variable, or open the file structure panel, then use those mappings just like any Vim command. This bridges Vim muscle memory with the full power of the IDE's built-in tools. To find the identifier for any IDE action, the plugin includes a tracking mode that displays action IDs as you use the interface. IdeaVim also supports a set of community-built plugins that add extra Vim functionality such as surround text objects, multiple cursors, easy motion, and commentary. An Early Access Program channel provides access to preview builds for users who want to test upcoming changes before they ship.

Copy-paste prompts

Prompt 1
Set up IdeaVim in IntelliJ IDEA and write an .ideavimrc that maps leader-r to Rename refactoring and leader-d to Go to Definition.
Prompt 2
How do I enable the IdeaVim surround plugin in PyCharm to use ys, cs, and ds commands the same way as vim-surround?
Prompt 3
Write an .ideavimrc that maps JetBrains actions for run, debug, test, and search everywhere to Vim-style leader keybindings.
Prompt 4
How do I use IdeaVim's action tracking mode to find the action ID for any JetBrains feature so I can map it in .ideavimrc?
Prompt 5
Configure IdeaVim in WebStorm to use leader-f for Find in Files and leader-e to toggle the project file explorer panel.
Open on GitHub → Explain another repo

← jetbrains on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.