You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
IntelliJ IDEA, PyCharm, CLion, PhpStorm, WebStorm, RubyMine, AppCode, DataGrip, GoLand, Rider, Cursive,
Android Studio and other IntelliJ platform based IDEs.
Use Tools | Vim in the menu to enable or disable vim.
Use the ~/.ideavimrc file as an analog of ~/.vimrc (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 ~/.ideavimrc file.
Get Early Access
Would you like to try new features and fixes? Join the Early Access Program and
receive EAP builds as updates!
Click the IdeaVim icon icon
in the status bar | Early Access Program | Subscribe to EAP
Or subscribe to EAP updates manually:
Open Settings | Plugins
Click the gear icon ⚙️, select Manage Plugin Repositories, and add the following url:
https://plugins.jetbrains.com/plugins/eap/ideavim
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.
""" 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 -------------------------letg:argtextobj_pairs="[:],(:),<:>"""" Common settings -------------------------setshowmodesetso=5setincsearchsetnu""" Idea specific settings ------------------set ideajoin
set ideastatusicon=grayset 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.setscrolloff=5" Do incremental searching.setincsearch" Don't use Ex mode, use Q for formatting.mapQgq
You can read your ~/.vimrc file from ~/.ideavimrc with this command:
source ~/.vimrc
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.
Alternatively, you can set up initialization commands using XDG standard.
Put your settings to $XDG_CONFIG_HOME/ideavim/ideavimrc file.
IdeaVim adds various commands for listing and executing arbitrary IDE actions as
Ex commands or via :map command mappings:
Executing actions:
<Action>({action_id})
For the mappings you can use a special <Action> keyword. Don't forget the parentheses.
E.g. map gh <Action>(ShowErrorDescription) <- execute hover on gh.
⚠️ Mappings to <Action> don't work with noremap.
If you know the case when it's needed, please let us know.
:action {action_id}
Execute an action by {action_id}. Works from Ex command line.
Please don't use :action in mappings. Use <Action> instead.
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 shift).
"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 <C-D)
Examples:
" Map \r to the Reformat Code action
:map\r<Action>(ReformatCode)" Map <leader>d to start debug
:map<leader>d <Action>(Debug)" Map \b to toggle the breakpoint on the current line
:map\b<Action>(ToggleLineBreakpoint)
IdeaVim can execute custom scripts that are written with Vim Script.
At the moment we support all language features, but not all of the built-in functions and options are supported.
You can evaluate the has('ide') function call and get 1 if it was called with IdeaVim or 0 if the function was called from Vim/NeoVim.
The option &ide contains the name and edition of your IDE, for example, "IntelliJ IDEA Ultimate Edition".
To see its value for the current IDE you are using, execute the :echo &ide command.
To write an IDE-specific configuration, use Vim's regexp match operators =~? (case-insensitive) / =~# (case-sensitive)
Example config:
" options and mappings that are supported by both Vim and IdeaVimsetnusetrelativenumberifhas('ide')
" mappings and options that exist only in IdeaVimmap<leader>f <Action>(GotoFile)map<leader>g <Action>(FindInPath)map<leader>b <Action>(Switcher)if &ide =~? 'intellij idea'if &ide =~? 'community'" some mappings and options for IntelliJ IDEA Community Editionelseif &ide =~? 'ultimate'" some mappings and options for IntelliJ IDEA Ultimate Editionendifelseif &ide =~? 'pycharm'" PyCharm specific mappings and optionsendifelse" some mappings for Vim/Neovimnnoremap<leader>f <cmd>Telescope find_files<cr>endif
💎 Contributing
The power of contributing drives IdeaVim 💪. Even small contributions matter!
See CONTRIBUTING.md to start bringing your value to the project.
Authors
See AUTHORS.md
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 ideaput is enabled for clipboard to enable native IJ insertion in Vim.
Sync IJ bookmarks and IdeaVim global marks: set ideamarks (works for marks with capital letters only)
Not familiar with the default behaviour during a refactoring? See the idearefactormode option.
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 dd, yy, or cc. For example, dd is not a separate command for deleting the line,
but a d command with a d motion.
Wait, but there isn't a d 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 dd, yy, and similar ones are simply translated to d_, y_, etc.
Here
is the source of this knowledge.
x, D, and & are not separate commands either. They are synonyms of dl, d$, and :s\r, respectively.
Here
is the full list of synonyms.
You can read a post about how modes work in Vim and IdeaVim.
A lot of variables that refer to visual mode start with two uppercase letters, e.g. VIsual_active. Some examples.
As mentioned here, this was done this way to avoid the clash with X11.
All releases before 2.0.0 were licensed under terms of GPL-2.0 or later.
The last commit before switch to MIT is 05852b07c6090ad40fde7d3cafe0b074604f7ac5.
You can read more about the license change here: JetBrains#543