180 KiB
The Changelog
History of changes in IdeaVim for the IntelliJ platform.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Before version 1.7.0:
Stable versions use X.Y format.
EAP (Early Access Program) versions use X.Y.Z format.
Get an Early Access
Would you like to try new features and fixes? Join the Early Access Program and
receive EAP builds as updates! Use the Early Access Program option in the status bar or
add this URL to "Settings | Plugins | Manage Plugin Repositories":
https://plugins.jetbrains.com/plugins/eap/ideavim
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.
To Be Released
Features:
- VIM-3058 Added the
"#register, which holds the name of the alternate file — the file you last switched away from, the oneCTRL-^jumps back to."#pputs it into the text,@#reads it in an expression, and:registerslists it under%. Like%, it reports the path relative to the content root, since IdeaVim has no current directory, and it is read only —:let @# = 'other.txt'reportsE354: Invalid register name: '#' - VIM-1370 Added the tag stack, so a jump to a definition can be retraced the way Vim does it.
CTRL-]now records the position it was jumped from,CTRL-Tand:popwalk back up those positions,:tagwithout an argument walks back down again, and:tagslists the stack with>marking where you are in it. All of them take a count, so2<C-T>and:2popstep back two tag jumps at once. The stack holds twenty entries, dropping the oldest once it is full, and a new tag jump made after walking back drops the entries you walked past.gdandgDare not tag commands and leave the stack alone, as in Vim - Added the
'tagstack'option ('tgst'), on by default. With:set notagstacka tag jump still navigates but records nothing, which is useful for a mapping that should not disturb the stack. Walking the stack is unaffected —CTRL-Tkeeps using whatever is already on it - VIM-1347 Added built-in
vim-signatureextension — enable it withPlug 'kshenoy/vim-signature'and every local marka-zof the file gets an icon in the gutter, so you can see where your marks are instead of having to remember.m,places the next free mark,m-clears the marks of the current line andm<Space>those of the whole buffer.]'and['walk through the marked lines in the order they appear, while'],'[,`]and`[walk through the marks in the order of their letters — all of them take a count, and each one is a jump, so''and<C-O>bring you back. Those last four are Vim's own marks of the last change or yank and the plugin takes them over, as the original does; every key is a mapping to a<Plug>name, sonmap gn <Plug>(SignatureGotoNextSpotAlpha)and friends let you keep Vim's.]`and[`are left alone, since IdeaVim already implements them as real motions. Global marksA-Zare not drawn, because with the defaultideamarksthey are IDE bookmarks, which the IDE shows in the gutter itself - VIM-2168 Added the
'ideawindowjumps'option, which gives every split its own jump list as in Vim. IdeaVim has always kept one list per project, so<C-O>in one split could take you back to a position you jumped from in another; with:set ideawindowjumpsa new split starts with a copy of the list of the window it was split from and the two lists then go their own ways, so:jumps,<C-O>and<C-I>only ever see the jumps made in the window you are in. The IDE's own Back and Forward navigation stays project wide either way. Since window ids do not survive a restart, only one list per project is saved between sessions — the list of the most recently used window, which a window with no list of its own starts from - VIM-934 Added the
'wildmenu'option ('wmnu'), so the completion popup that<Tab>opens on the:command line can now be turned off with:set nowildmenu— previously it was always shown. With it off,<Tab>and<S-Tab>still cycle through the matches one at a time, and<Left>and<Right>move the caret instead of moving through the match list. The option is on by default, which is what IdeaVim has always done - VIM-4314
%and its file name modifiers are now expanded when a command runs, not just when<Tab>completes it —:w %:h/backup.txtwrites a copy next to the current file,:!mv % %:h/renamed.txtrenames it, and:source,:splitand:readtake%as well.%is the buffer name, which stays relative while the file is under a content root;:pforces the full path,:htakes the directory,:tthe file name,:rdrops the last extension and:egives it, and they chain left to right, so%:t:ris the file name without its extension and%:p:h:hthe parent of its directory. A backslash removes the special meaning, so:!echo \%prints a bare%, and a file name that itself contains a%is no longer expanded a second time. As in Vim,:!expands only the file name specials and leaves$VARand~to the shell. Completion understands the modifiers too, so:e %:h/<Tab>now lists the files next to the current one instead of treating%:has the file name - Added built-in
vim-textobj-lineextension — enable it withPlug 'kana/vim-textobj-line'and you get two text objects for the current line:alselects every character of the line without the end of line character (the same as0v$h), andilleaves the leading and trailing whitespace out of it (the same as^vg_). So on an indented line,dildeletes the code and keeps the indent, whiledalempties the line completely, andyil,cil,gUaland the rest work the same way from anywhere in the line, no matter where the caret is. As in the original, neither selects anything on an empty line, andilalso does nothing on a line of whitespace only, since there is no text there to select. Setlet g:textobj_line_no_default_key_mappings = 1before enabling the plugin to keepalandilfree and map<Plug>(textobj-line-al)and<Plug>(textobj-line-il)yourself - VIM-2089 Added built-in
vim-visual-star-searchextension — enable it withPlug 'bronson/vim-visual-star-search'and*and#in Visual mode search forwards and backwards for the selected text instead of for the word under the caret. The selection is searched for literally, without the word boundaries the built-in*adds, so selectingfooalso finds it insidefoobar, and characters such as.,*,[and~match themselves instead of being read as a pattern. Every kind of selection works:V*searches for the whole line together with its end of line character, so it only matches text that ends a line, and a blockwise selection searches for its rows joined by end of line characters, as the original does.nandNrepeat the search,gvbrings back the text you searched for, and the position you searched from goes on the jump list, so''and<C-O>return to it. Unlike the built-in*, the search honours'ignorecase'and'smartcase', because the original searches with a plain/. A count is applied, so3*finds the third occurrence — the original loses it, as the:<C-u>in its mapping wipes the count off the command line. The plugin's<leader>*mapping, which greps the selection through the whole project, is not implemented - VIM-2663 Added the
:startinsert(:star) and:startreplace(:startr) commands, the counterparts of:stopinsert.:startinsertenters Insert mode where the caret is, exactly asidoes, and:startinsert!first moves to the end of the line, asAdoes.:startreplaceenters Replace mode asRdoes, and:startreplace!works like$R, so it starts by overwriting the last character of the line rather than appending after it — with:set virtualedit=onemoreit goes one further and appends, just as$itself does.<BS>in the Replace mode they start restores the overwritten characters, like any other Replace session. Every caret takes part, so with several carets each one moves to the end of its own line. Like:stopinsert, they are meant for autocommands —autocmd BufEnter scratch startinsertopens a scratch buffer ready to type in. Neither takes a range or an argument;:1startinsertreportsE481: No range allowedand:startinsert fooreportsE488: Trailing characters
Fixes:
- VIM-3667 Fixed mappings to IDE actions not working when no file is open. With
map <leader>sf <Action>(GotoFile)in~/.ideavimrc, pressing<leader>sfused to do nothing once every editor tab was closed, because IdeaVim only listened for keys inside an editor. The keys of such Normal mode mappings are now picked up while the focus is on a non-text component of a project with no open editor — the Project tool window, for example — and go through the regular mapping machinery, so counts,'timeout'and recursive mappings behave as in an editor;<Esc>cancels a half-typed sequence. Only mappings whose right-hand side consists of<Action>(...)sequences take part, since there is no editor for anything else to act on:nmap j gjkeepsjfor the tool window, and the:action GotoFile<CR>form of the mapping is not picked up. Text fields such as Search Everywhere keep receiving typed characters, modal dialogs are left alone, and keys that do not start a mapping are left to the IDE - Fixed
gxadding to the jump list — pressinggxused to record the caret position as a jump and overwrite the'mark, so a followingCTRL-Olanded back on the caret's own line instead of returning to the previous jump. As in Vim,gxopens the URL without touching the jump list - Fixed the word text objects throwing an exception when they reached the very start of the file — growing a right-to-left Visual selection with
iw,aw,iWoraWlooks one character back to decide where the previous word begins, and at offset 0 there is no such character. Starting on the second character of the file and pressingv,h,iwnow selects back to the start of the file instead of reporting an internal error - VIM-4308 Fixed the current search match being drawn with a box around it after the search was over. The box now only appears while
'incsearch'is previewing the pattern you are typing, and only in the window you are searching in — accepting the search with<CR>, cancelling it with<Esc>,n,N, moving the caret, editing the text, toggling'hlsearch'and clicking into another window all leave every match looking the same. This is what a stock Vim looks like: its default colour scheme links theCurSearchhighlight group toSearch, so the match under the cursor is drawn no differently from the rest unless you defineCurSearchyourself. Neovim does define it, which is why the box shows up there - Fixed
gvreselecting one character too many. In Visual modegvswaps the current selection for the previous one, and the restored selection ran one character past where it ended — withfoo baron the first line andbar fooon the second,viwonfoo,<Esc>,j,viwand thengvselectedfooinstead offoo - Fixed
da(inside a nested block swallowing the enclosing brackets. A characterwise delete or yank spanning several lines is promoted to linewise only when there is nothing but white space before its start and after its end, but the check for what comes after skipped the very first character following the range. So with an outer block opened on one line, an inner one opened on the next, and both closed by))on a third,da(on the inner(deleted the last two lines whole and took the outer)with them, instead of deleting just the inner block - Fixed a yank with a blockwise-forced motion keeping only its first line.
CTRL-Vafter the operator makes the motion cover a rectangle, but the yank stored just the top row of it, characterwise — withabcdeabovefghij,y<C-V>jfollowed bypnow puts the two-row blocka/fback as a block instead of pasting a singlea. In builds with assertions enabled it reported an internal error instead - VIM-4319 Fixed IdeaVim reporting an internal error when it was disabled, uninstalled or updated without restarting the IDE. The plugin used to shut itself down after the platform had already unregistered its services, so the shutdown could no longer reach them and failed with a null pointer exception. It now shuts down just before the platform unloads it, while everything it needs is still there, which also means its listeners are properly removed and typing is handed back to the IDE — so after switching IdeaVim off the keys behave as they would with the plugin never installed, without a restart
- Fixed
CTRL-R CTRL-Freporting an internal error on the command line when the'incsearch'match ended at the very end of the file. The file name is looked for just past the match, where there is nothing left, so searching for the last word of the file and pressingCTRL-R CTRL-Fnow reportsE446: No file name under cursor, as Vim does - VIM-2010 Fixed
.replaying an import that the IDE added while you were typing. IdeaVim records every change the document goes through during an insert, which is how auto-inserted brackets and indents get replayed too, but animportline put in by Add unambiguous imports on the fly, by the Alt+Enter fix or by the completion popup is not something you typed. Those changes are now left out of the recording — in a Java file with twoSet<String>fields, changing the first one withcf>List<String>also addsimport java.util.List;at the top of the file, and.on the second field now changes just that field instead of typing the text of the import into it as well. Picking the class from the completion popup is recorded correctly too: it inserts the fully qualifiedjava.util.List, adds the import and then shortens the name again, and.used to replay that whole round trip and leave the caret in the middle of it
Changes:
- IdeaVim's own options are now all prefixed with
idea, so it is clear at a glance which options are IdeaVim's and which are Vim's.'lookupkeys','pythonconsole','trackactionids'and'visualdelay'are now'idealookupkeys','ideapythonconsole','ideatrackactionids'and'ideavisualdelay'. The old names still work, so an existing~/.ideavimrcneeds no changes, but they are deprecated and only the new name is reported by:setand:set all.'trackactionids'keeps its'tai'abbreviation CTRL-Tis no longer a second key forCTRL-O. It used to step back along the jump list; it now walks back up the tag stack as in Vim, and reportsE73: Tag stack emptywhen no tag jump has been made.CTRL-Ois unchanged and remains the way to walk the jump list
Merged PRs:
- 2053 by 1grzyb1: VIM-2010 fix repeat insert with import
- 2052 by 1grzyb1: VIM-2700 Navigate between split diff windows
- 2049 by 1grzyb1: VIM-1974 implement textobj-line extension
- 2046 by 1grzyb1: VIM-3667 handle vim shortcuts outside editor
- 2045 by 1grzyb1: VIM-4321 Set configurable key in xml
- 2044 by 1grzyb1: VIM-4319 turn off plugin before unload
- 2037 by 1grzyb1: VIM-4314 Expand % signs in commands
- 2034 by 1grzyb1: VIM-4308 Don't update the current search match highlight when no search is active
- 2033 by AndDe-gourav: fix range of visual selection
- 2021 by 1grzyb1: VIM-3058 alternate file name register
- 2020 by 1grzyb1: VIM-1370 Implement tag stack in IdeaVim
- 2018 by 1grzyb1: VIM-1347 Implements Signature marks plugin
- 2014 by 1grzyb1: VIM-4312 correct linewise delete promotion when range end has trailing non-whitespace
- 2001 by 1grzyb1: VIM-934 support for wildmenu option
- 2000 by 1grzyb1: VIM-2168 separate history per split window
2.46.2, 2026-08-24
Features:
- VIM-4312 Added the
'pythonconsole'option (on by default). Set:set nopythonconsolein~/.ideavimrcto disable Vim keybindings in the Python console
Merged PRs:
2.46.0, 2026-08-18
Features:
- VIM-301 Added built-in
YankRingextension — enable it withPlug 'YankRing.vim'to keep a history of everything you yank, delete or change. Right after a paste,<C-P>and<C-N>swap the pasted text for the previous or next entry in the ring, so you can reach for something you copied a few yanks ago without going back for it; this works afterp,P,gp,gPand the]p/[p/]P/[Pvariants.:YRShowlists the ring,:YRClearempties it,:YRReplace {offset}cycles by an explicit offset, andlet g:yankring_max_history = {n}sets how many entries are kept (default 100) - VIM-4275 Added modeless selection in the editor for modes that
'mouse'leaves out — dragging with the left button still selects text so you can copy it, but the selection no longer moves the caret, does not start Visual mode, and is not something operators act on; it goes away as soon as you type a command or start another selection. Turning the mouse off for a mode also no longer takes the IDE's mouse features with it: the context menu, gutter clicks, middle-click paste, andCtrl/Alt/Shiftgestures keep working, since only a plain left-button click over text is Vim's to interpret - VIM-4304 Added command-line mode support to
sethandler— the newcmode letter decides who owns a shortcut while the:command line is active (previously it always followed the Normal mode handler). Since later definitions override earlier ones,sethandler <F2> a:ide c:vimhands the shortcut to the IDE everywhere except the command line, which keeps acnoremap <F2> …mapping working - VIM-2694 The match the cursor is on is now highlighted differently from the other
'hlsearch'matches, as Vim'sCurSearch— after/loremorn, the match you land on is drawn with a box around it while the rest keep the plain search highlight, and the box follows the caret as you move between matches. Previously only the'incsearch'preview was highlighted this way, so once the search was accepted every match looked the same - VIM-1565 Added the
:stopinsertcommand (:stopi), which leaves Insert or Replace mode as if you had pressedEsc, and does nothing in any other mode. It is meant to be used from an autocommand, which is Vim's answer to "always come back to Normal mode when I switch files":autocmd BufEnter * stopinsertdoes exactly that. Leaving Insert mode is now something the handler has to ask for — the buffer and window events (BufEnter,BufLeave,WinEnter,WinLeave) no longer end an insert session merely because a handler is registered for them - VIM-893 Added an "Enable repeating keys in macOS on press and hold" checkbox to Settings | Editor | Vim, so the setting can be changed at any time — previously the choice was only offered once, in a notification the first time IdeaVim started, and there was no way to go back on it afterwards. As before, it writes the
ApplePressAndHoldEnabledsystem setting (the same as runningdefaults write -g ApplePressAndHoldEnabled 0), and since macOS only reads that when an application starts, the IDE asks to restart for the change to take effect
Fixes:
- VIM-4292 Fixed
d}in the middle of a paragraph swallowing the blank line that separates it from the next one, andy}yanking a trailing new line that Vim does not yank — an exclusive motion that ends in column 1 now stops at the end of the previous line, as in Vim. The same adjustment now also applies to operators built on'operatorfunc'andg@, such as thecommentaryextension'sgc} - VIM-4290 Fixed
dw,dWanddedoing nothing when the caret is on the last character of the file — the operator is now applied to the rest of the file, so the character is deleted - VIM-4293 Fixed
d}andy}on the very first character of the file being characterwise instead of linewise - VIM-4289 Fixed the WORD motions
W,EandBstopping where the writing system changes — a WORD is any run of non-blank characters, soEonabcあいう defnow lands onうrather than onc - VIM-4291 Fixed word motions treating every character above Latin-1 as a word character — non-ASCII punctuation now ends a word, so
wonfoo—barstops at the em dash and2eonです。nextstops at the ideographic full stop - VIM-4294 Fixed the sentence motion
)landing past the end of a file that ends with a new line, andd)on the last sentence deleting that new line along with it - VIM-4295 Fixed
da"ignoring a tab after the closing quote — a tab now counts as trailing white space, as in Vim, so the leading space is left alone - VIM-4163 Fixed the count being ignored for the inner quote text objects —
d2i"now includes the quotes themselves (but not the surrounding white space thatda"would take) - VIM-2878 Fixed the
nflag of:substituteperforming the substitution instead of counting —:%s/foo/bar/nnow only reports how many matches there are, e.g.2 matches on 2 lines, and leaves the text untouched - VIM-4300 Fixed
:substitutewith a backslash delimiter failing withE383—:s\/new/now reuses the last search pattern and:s\&new&the last substitute pattern - VIM-4296, VIM-4297 Fixed a search branch that ultimately fails to match leaving its captures behind —
\zsand\zein a discarded alternative no longer move the start or end of the match (e.g.a\zsc\|abmatched onlybinab), and a capture group in one is no longer reported as matched - VIM-4298 Fixed a look-behind with alternatives of different lengths giving up after the first one —
\%(a\|ab\)\@<=cnow matches thecinabc - VIM-4299 Fixed ignoring case being applied to a character class inside a collection —
\c[[:upper:]]no longer matches lowercase letters, while\cstill applies to the individual characters and ranges of the collection - Fixed the "See What's New" action in the update notification doing nothing in split mode (the frontend/backend architecture also used by remote development) — the release notes page is bundled with the plugin, which only the backend can read, so the page is now loaded from there and opens as expected
- VIM-2879 Fixed the last search term staying highlighted after an IDE restart — with
'hlsearch'on, every open project used to come up with the previous session's/match still highlighted; search highlights are now cleared on startup, as in Vim - VIM-4272 Fixed a linewise yank losing its type in the
*register on Linux — the PRIMARY selection stores plain text only, so the register's type was guessed back from that text, and a line whose trailing spaces the selection had dropped no longer looked linewise. While nothing else has claimed the selection, the type IdeaVim published with the text is now kept, soyyfollowed by"*ppastes on a new line instead of inside the current one, and:registersreports*asl. The type also survives once the selection is no longer IdeaVim's — which happens routinely, since the IDE republishes the editor selection as it changes — as long as the text is still recognisably the yanked text with its trailing new line or trailing spaces eaten in transit. The+register recovers its type the same way - VIM-4272 Fixed a linewise paste overwriting the register it pasted from when
'clipboard'containsunnamedon Linux —preindents the pasted lines with the IDE's action, which needs them selected, and that selection was published as the PRIMARY selection, the very*register the unnamed register points at. Pasting again inserted the reindented lines instead of the text you had yanked, duplicated or broken; the temporary selection is now kept out of the system selection - Fixed autocommand events firing for IdeaVim's own internal editors — the command-line window, the
:substitutepreview and the control characters editor are an implementation detail rather than a file you opened, soautocmd BufEnter * …and the other buffer events no longer run when one of them opens or closes - VIM-4302 Fixed Vim not working in the Python console started with "Run file in Python Console" — such a console is named after the run configuration instead of "Python Console", so it wasn't recognised; Normal mode, motions, and
Escnow work in its input as they do in the console opened from the tool window - VIM-2074 Fixed
<BS>in Replace mode not bringing the replaced text back — Vim remembers what each typed character replaced, and backspace undoes those replacements one at a time, soRfollowed bymushroomand eight backspaces leavesgrzybexactly as it was. Characters typed past the end of the line replaced nothing, so backspacing over one deletes it instead, and a<CR>typed in Replace mode is undone by joining the lines back together. Backspacing beyond where the replacement started only moves the caret and leaves that text alone, as does moving the caret with the arrow keys first, since that begins a new run of replacements.<C-W>restores the characters it steps over in the same way, rather than deleting the word - VIM-2370 Fixed a linewise paste reindenting the pasted lines even with "Reformat on paste" set to "None" in Settings | Editor | General | Smart Keys —
preindents with the IDE's action so that pasted code lands at the surrounding indent, but that is exactly what turning the setting off asks it not to do, soyypnow repeats the line as it was written. Where the caret ends up is not affected by the setting:gpstill leaves it at the start of the following line either way - VIM-2536 Fixed
:normallosing the first new line in its keys and everything after it when they came from an:executestring —:exe "normal! iX\<CR>Y"typed onlyX, because\<CR>was parsed into a line feed and a line feed ends the Ex command line.\<CR>(and\<Enter>,\<Return>) is now a carriage return as in Vim, so it reaches:normalas the Enter key, and\<NL>,\<NewLine>,\<LineFeed>and\<LF>are recognised as the same key as\<C-J>. This also fixes a register built the same way:let @q = "iX\<CR>Y\<Esc>"followed by@qnow inserts both lines. A line feed still separates commands where it isn't part of the argument, so:exe "echo 1\nnormal! x"runs both - Fixed
:normalending an insert session when it is run while you are in Insert or Replace mode — as in Vim, its keys are executed as Normal mode commands and the mode you were in is restored afterwards, rather than the command dropping you into Normal mode. This is reached from an autocommand, soautocmd BufEnter * normal! xno longer takes you out of Insert mode when you switch files (use:stopinsertif that is what you want)
Merged PRs:
- 1996 by 1grzyb1: Fixes before release
- 1995 by 1grzyb1: VIM-2536 NL characters in commands
- 1994 by 1grzyb1: VIM-2370 respect none reformat option when pasting
- 1992 by 1grzyb1: VIM-2074 Fix backspace in replace mode
- 1983 by 1grzyb1: VIM-1565 implement stopinsert command
- 1982 by 1grzyb1: VIM-4272 Don't update systemSelection during indent
- 1980 by 1grzyb1: VIM-4272 recover the register type when PRIMARY comes back stripped
- 1976 by 1grzyb1: VIM-4272 use published PRIMARY content when we own the selection
- 1973 by 1grzyb1: VIM-893 Allow to change key repeat in settings
- 1972 by 1grzyb1: VIM-2694 different current highlight from hlsearch
- 1970 by 1grzyb1: VIM-4275 implement modeless selection for the 'mouse' option
- 1963 by 1grzyb1: VIM-301 Add yank ring extension
- 1961 by 1grzyb1: Fix opening what's new in split mode
- 1958 by 1grzyb1: VIM-4304 command mode sethandler
- 1957 by 1grzyb1: VIM-4302 initlize vim editor for run in python console
- 1952 by 1grzyb1: VIM-2879 clear highlights after restart
2.45.0, 2026-07-28
Features:
- VIM-1850 Added the
'keymap'option for typing non-English text without switching your system keyboard layout —set keymap=russian-jcukenwin(or any of the bundled keymaps such asaccents,greek, ordvorak) loads a set of language mappings, and your own keymap files can be dropped into~/.config/ideavim/keymap/. The mappings apply to text typed in Insert and Replace mode only while'iminsert'is on (default off, local to the buffer); pressCTRL-^in Insert mode to toggle it. Also added the:loadkeymapcommand and the language mapping commands:lmap,:lnoremap,:lunmap, and:lmapclear - VIM-2694 Added
CTRL-GandCTRL-Tduring incremental search — while typing a/or?pattern withincsearchenabled,<C-G>jumps to the next match and<C-T>to the previous one - VIM-3001 Added built-in
textobj-userextension — a framework for declaratively defining your own text objects from~/.ideavimrcwithtextobj#user#plugin({name}, {specs}), no plugin code required. Each object is described by a Vimpattern(or a[head, tail]delimiter pair) plus the keys thatselectit — e.g. mapad/idto select an ISO date such as2013-03-16. Supportsselect-a/select-i,move-n/move-p/move-N/move-Pmotions,region-type(charwise/linewise/blockwise), and remappable<Plug>(textobj-…)mappings; activate withPlug 'kana/vim-textobj-user' - Added support for the
IDEA_VIM_CUSTOM_VIMRCenvironment variable — set it to load your.ideavimrcfrom a custom path instead of the default locations - VIM-750 Added the forced motion modifiers
v,V, andCTRL-Vbetween an operator and its motion —vforces charwise and toggles the motion's inclusive/exclusive nature (e.g.dvwincludes the landing char,dv$leaves the last one),Vforces linewise (e.g.dVedeletes the whole line), andCTRL-Vforces blockwise (e.g.d<C-V>jdeletes a vertical block) - VIM-1000 Added Insert-mode whole-line completion — press
<C-X>to startCTRL-Xcompletion, then<C-L>to complete the current line from other matching lines in the buffer - VIM-986 Added Insert-mode file name completion — press
<C-X>to startCTRL-Xcompletion, then<C-F>to complete file paths from the file system - VIM-1341 Added the
gxcommand — pressgxin Normal mode to open the URL under the caret (e.g.https://example.com, or anyscheme://…such asssh://) with the OS default handler. The program can be overridden with theg:netrw_browsex_viewervariable - VIM-989 Added a file argument to
:write—:w {file}now saves the buffer to a new file (e.g.:w ~/notes.txt), a range writes only the selected lines (e.g.:1,2w out.txt), and:w!overwrites an existing file while:wreports an error rather than clobbering it. The path supports environment variables and~expansion - VIM-330 Added the spell-checking dictionary commands
zg,zw, andz=—zgmarks the word under the caret as correctly spelled,zwremoves it from the dictionary again, andz=shows a popup with suggested replacements for the misspelled word and applies the one you choose. Accepted words are stored in the IDE's own spelling dictionary - VIM-3936 Enabled Vim in the Python console — Normal mode, motions, and
Escnow work in the console input, while the console keeps handlingEnter(execute), theUp/Downhistory keys, and horizontal arrow keys
Fixes:
- VIM-4281 Fixed the
:output panel and command line keeping their old text colors after the IDE theme or editor color scheme is switched while they are open — the displayed text now updates to match the new scheme - VIM-4265 Fixed being left in Visual mode after a refactoring (e.g. rename) with
idearefactormode=keep— the mode active before the action is now restored once the template's selection changes settle - VIM-4270 Fixed a trailing
%after an explicit range overriding it — running a command on a Visual selection with a%appended (e.g.:'<,'>%d) no longer expands to the whole file; the%is now ignored to match Vim - VIM-4273 Fixed
:s///gskipping matches after the first on tab-indented lines — e.g.%s/Cinema/Other/gnow replaces every occurrence on a line that starts with tabs - VIM-2997 Fixed a crash during method navigation (
[m,]m) when an element in the file structure had no text range - VIM-315 Fixed the caret position when returning to Insert mode after a
<C-O>single command — a delete that reaches the end of the line (e.g.D,d$, ord3w) now leaves the caret in the append position past the last character, while other commands (e.g.dbat the end of a line) no longer push the caret to the end of the line - VIM-2649 Fixed the caret not jumping to the selected match when accepting an incremental search with
Enterafter stepping through matches with<C-G>/<C-T> - VIM-4284 Fixed vimscript parse errors being silently swallowed — errors are now shown to the user, and an error on the last line no longer causes the whole script to be rejected
- VIM-4286 Fixed search and substitute patterns with square brackets that don't form a collection being rejected as invalid — an unmatched
[is now a literal bracket (e.g./heap[,/[[[,/[a-z) and a]right after[or[^is a literal member of the collection (e.g./[]]matches a],/[^]]matches anything but a]), matching Vim - VIM-4287 Fixed
datleaving an empty indented line behind when the tag spans whole lines — deleting an indented<b>…</b>block now removes those lines completely and leaves the caret on the following tag. The same applies to other deletes that Vim turns linewise, such asd}on an indented paragraph, while text objects provided by extensions (e.g.dam,die,d%) stay characterwise as in Vim - VIM-4301 Fixed the IDE's own undo (
Ctrl+Z, when undo is handled by the IDE) not reverting a change made withSorCin Normal mode — repeated presses were spent restoring the caret and the text was never brought back - VIM-4283 Fixed
dwand similar edits doing nothing inside a Jupyter notebook cell — the text is now deleted instead of the command being silently ignored - VIM-4282 Fixed the editor scrolling unexpectedly when the caret was below the visible area
- Fixed IdeaVim failing to load in split mode (the frontend/backend architecture also used by remote development) — the new spell-checking commands declared a dependency on the IDE's spellchecker module, which the frontend does not provide
Changes:
- VIM-2178 The
multiple-cursorsextension now maps its default shortcuts to match the original vim-multiple-cursors plugin:<C-n>/g<C-n>add the next occurrence (whole word / any match),<A-n>/g<A-n>select all occurrences in the file, and<C-x>/<C-p>skip and remove selections. This is a breaking change from the previous<A-n>/g<A-n>/<A-x>/<A-p>mappings — setlet g:multi_cursor_use_default_mapping = 0to disable the defaults and bind the<Plug>mappings yourself (for example, back to the old<A-n>based keys)
Merged PRs:
- 1953 by 1grzyb1: Fix spllechecker in split mode and caret visual helper test
- 1949 by 1grzyb1: VIM-4301 fix native undo action
- 1946 by 1grzyb1: VIM-4287 Expand characterwise range to whole lines when promoted to linewise delete
- 1947 by 1grzyb1: VIM-330 Add missing spellchecker methods
- 1944 by 1grzyb1: Handle
<C-O>single command deletion to end of line correctly - 1943 by 1grzyb1: VIM-4286 Normalize square brackets in vim regex
- 1940 by 1grzyb1: VIM-2649 Move carret on enter after C-G/C-t
- 1939 by 1grzyb1: VIM-4284 Errors in vim scripts
- 1938 by 1grzyb1: VIM-3936 enable vim in python console
- 1932 by 1grzyb1: VIM-4282 Don't scroll if caret below visible area
- 1931 by 1grzyb1: VIM-4283 Fix dw in jupyter notebook cell
- 1929 by 1grzyb1: VIM-4281 update output panel theme on change
- 1928 by 1grzyb1: VIM-4279 fix till V motion
- 1925 by 1grzyb1: VIM-1850 Implement keymap option
- 1903 by AndDe-gourav: fix Wrong 'motion last column action test' and 'D , d$ after i_Ctrl-o' behavior
- 1922 by 1grzyb1: VIM-2997 Handle null TextRange in PsiHelper
- 1911 by 1grzyb1: VIM-989 Implement write command with file argument
- 1913 by 1grzyb1: VIM-1341 Implement gx command
- 1912 by 1grzyb1: VIM-4273 recalculate next search offset after substitution
- 1908 by 1grzyb1: VIM-1000 completion mode
- 1906 by 1grzyb1: VIM-750 Implement forced motion operators
- 1904 by 1grzyb1: VIM-3100 Implement textobj user plugin
- 1889 by ameertaweel: Allow Setting Custom
.ideavimrcPath - 1890 by 1grzyb1: VIM-2694 Add C-G and C-T action during incsearch
- 1894 by 1grzyb1: VIM-4270 Ignore % after initial range
2.41.0, 2026-07-01
Features:
- VIM-1346 Implemented the
Ucommand — undo all latest changes on the most recently changed line; pressingUagain redoes them - VIM-2116 Added built-in
indentwiseextension — motions that navigate by indentation level:[-/]-jump to the previous/next line of lesser indent,[+/]+to greater indent,[=/]=to equal indent, and[%/]%to the beginning/end of the current indent block; activate withPlug 'jeetsukumaran/vim-indentwise' - VIM-3004 Added support for the
g:NERDTreeQuitOnOpenvariable in the NERDTree plugin — setlet g:NERDTreeQuitOnOpen = 1to close the project tree after opening a file witho - VIM-2037 Added the
'mouse'option (defaultnvi) — controls which modes a mouse click moves the caret in, with a flag per mode (nNormal,vVisual,iInsert,cCommand-line),ato enable all of them, andrto dismiss the more-prompt/output panel on click
Fixes:
- Fixed
u(undo) inside a recorded macro not replaying — e.g. recordingdwu(delete a word, then undo) and replaying it with@anow works correctly - VIM-4257 Fixed autocmd commands for Normal-mode events (e.g.
BufWritePre) running while still in Insert mode — IdeaVim now returns to Normal mode before executing them - VIM-4256 Fixed an empty
'guicursor'value — IdeaVim now falls back to the default IDE caret shape instead of breaking the caret
Merged PRs:
- 1882 by 1grzyb1: VIM-4267 rename vim-indentwise to indentwise plugin
- 1881 by 1grzyb1: VIM-2037 Implement mouse option
- 1878 by 1grzyb1: VIM-4256 handle empty guicursor
- 1877 by 1grzyb1: VIM-1346 Implement undo all line command
- 1876 by 1grzyb1: VIM-3004 support NERDTreeQuitOnOpen option
- 1873 by 1grzyb1: VIM-2116 Implement indentwise plugin
- 1874 by 1grzyb1: VIM-4257 Ensure that autocmd runs in normal mode
- 1871 by citizenmatt: Restore plugin compatibility for Argument.Type
- 1870 by 1grzyb1: Fix undo in macro replay
2.40.0, 2026-06-25
Features:
- VIM-2283 Added support for the
'langmap'and'langremap'options — enter Normal- and Visual-mode commands from a non-English keyboard layout (e.g. Greek or Dvorak) by mapping typed characters to plain ASCII, while text typed in Insert mode is left as-is
Fixes:
- VIM-315 Fixed the caret landing past the end of the line after
<C-O>(run one Normal-mode command from Insert mode) at the end of a line — the following command (e.g.db) now operates from the correct position - VIM-4253 Fixed text being inserted twice when leaving Insert mode with
<Esc>(e.g. in Rider, where Escape is processed from multiple places at once) - VIM-4245 Fixed cursor landing on a line break after an IDE action (e.g.
GenerateConstructor), which left it in an invalid Normal-mode position and caused commands likelto move the cursor backwards - VIM-4245 Fixed the cursor being placed one character past the end of the refactoring template box with
idearefactormode=keep— it now rests on the last character inside the box - VIM-1082 Fixed operators (
d,c,y) over collapsed folds — a fold is now removed only when the motion actually covers the start of the folded region, soddon a collapsed fold header deletes the whole region whiledlmid-line on the header deletes only one character - VIM-4255 Fixed a key being recorded twice in a macro when it is the prefix of a mapping that times out — e.g. with
map ys ..., recordingywno longer producesyyw - VIM-4240 Fixed filesystem changes made by a shell command (
:!) not being visible — the virtual file system is now refreshed after the command finishes
Merged PRs:
- 1861 by citizenmatt: Add 'langmap' support
- 1809 by AndDe-gourav: Fix vim 315 incorrect insert normal mode behavior
- 1853 by 1grzyb1: VIM-1082 adjust motion for fold regions
2.39.0, 2026-06-18
Features:
- VIM-1638 Added window resize commands —
<C-W>+/<C-W>-to increase/decrease height,<C-W>>/<C-W><to increase/decrease width,<C-W>=to equalize all windows,:resize [±]nand:vertical resize [±]n - VIM-1617 Added built-in
youcompletemeextension —<Tab>cycles through the code completion popup (<S-Tab>cycles backwards) while leaving normal tab behavior when no popup is open; activate withset youcompleteme - VIM-2431 Count prefix now repeats
<Action>mappings the specified number of times — e.g.,5gjwithmap gj :action EditorCloneCaretBelow<CR>runs the action 5 times - VIM-1025 Added an
IdeaVim: Edit Control Charactersaction — opens a dedicated editor to view and edit registers/macros that contain control characters (shown in caret notation, e.g.^M,^[), making it possible to edit macros that include keys the IDE normally can't display abolishextension now respectsg:abolish_no_mappings—let g:abolish_no_mappings = 1suppresses the defaultcr<x>key mappings while keeping the<Plug>mappings available for manual binding- Implemented the
g<command to redisplay the last page of output - Added support for the
'cmdheight'option — messages up to this many lines are shown in the single-line message area, larger output uses the more-prompt pager - Added the
'messagesopt'option with awaitvalue — single-line messages are now automatically hidden after a timeout (default 10 seconds;wait:0keeps them visible) - Added modeless selection in the output panel and command line — select text with the mouse and copy it with
<C-Y> - VIM-2544 Added search count display — after a
/,?,n,N,*, or#search, the current match index and total are shown (e.g.[2/4]), along with the'maxsearchcount'option that caps the counted total (default 999), showing>when exceeded (e.g.[2/>3]) - VIM-1960 Added built-in
targets.vimextension — adds seeking text objects for pairs (( ) { } [ ] < >, plusbfor any block), quotes (',", backtick, plusqfor any quote), separators (, . ; : + - = ~ _ * # / | \ & $), arguments (a) and tags (t), withi/a/I/Amodifiers andn/lnext/last qualifiers (e.g.cin)changes inside the next parentheses,da,deletes a list item with its separator); activate withPlug 'wellle/targets.vim' - VIM-2883 Added the
'inccommand'option for a live preview of the:substitutecommand — withinccommand=nosplitthe replacement is previewed in the buffer as you type the command (and reverted if you cancel with<Esc>); withinccommand=splita preview window additionally lists each affected line - VIM-3049 Added Vim's insert-mode completion keys for the IDE popup —
<C-Y>accepts the selected completion item and<C-E>closes the popup
Fixes:
- VIM-1662 Fixed the
NewScratchFileaction not working when invoked through IdeaVim (e.g. mapped with<Action>(NewScratchFile)) — it previously stayed disabled under IdeaVim's action context - VIM-741 Fixed
<Tab>always being captured by Vim — it is no longer a Vim-only editor key, sosethandler <Tab> a:idecan release it to the IDE - VIM-3459 Fixed
*search highlighting not respecting case sensitivity — withsmartcaseenabled,*on a capitalized word now highlights only exact-case matches - VIM-3301 Fixed cursor being hidden behind sticky panels (e.g., sticky class headers) when
scrolloff=0 - VIM-2501 Fixed vertical centering (
zz,zt,zb) when block inlay hints are present - VIM-2529 Fixed double scroll when finishing incremental search
- VIM-4250 Fixed cursor column drifting when moving up/down (
j/k) between lines that differ by one column — the desired column is now preserved - VIM-4249 Fixed
c(change) being delayed in Visual mode when theabolishextension is enabled — abolish no longer registers default Visual-mode coercion mappings that madecan ambiguous prefix - Fixed
:map {prefix}incorrectly listing non-matching mappings — it now reportsNo mapping foundwhen no mapping matches the given prefix - VIM-4230 Fixed the single-line message area staying on screen with a stale message — it is now dismissed on redraw (
<C-L>), scrolling, mode change,<Esc>, or after a timeout - VIM-4240 Fixed empty or blank output showing a persistent empty output panel
- Fixed
'nomore'scrolling — output now correctly scrolls to the end when the more-prompt pager is disabled - Fixed mode after a mouse selection made while in Insert mode — deselecting now returns to Insert mode instead of Normal mode
Changes:
- The more-prompt pager now supports scrolling back as well as forward (with the keyboard and mouse wheel), matching Vim's keys
- External commands (e.g.
:!echo) now always show the hit-enter prompt and include the typed command, matching Vim - Typing
:while output is showing now starts a new command line, like Vim - Long output (such as
:maplistings) now wraps at the character boundary rather than at word breaks
Merged PRs:
- 1847 by 1grzyb1: Vim-3049 Command for closing completion
- 1845 by 1grzyb1: VIM-2883 Implement inccommand for dynamic replace
- 1843 by 1grzyb1: VIM-1960 Implement targets plugin
- 1840 by 1grzyb1: VIM-1662 handle NewScratchFile action
- 1839 by 1grzyb1: VIM-741 Remove tab from vim only keys
- 1836 by 1grzyb1: VIM-2544 Implement search match count
- 1826 by citizenmatt: Update handling of output panel
- 1830 by 1grzyb1: VIM-4250 preserve cursor pistion with one column diff
- 1827 by 1grzyb1: VIM-4249 Remove visual mapping for abolish plugin
- 1825 by 1grzyb1: VIM-1025 Add control chars editor
- 1823 by citizenmatt: Fix output of maps when prefix match fails
- 1822 by 1grzyb1: VIM-1617 YouCompleteMe plugin support
- 1821 by 1grzyb1: VIM-2431 use count to repeat mapped action
- 1820 by 1grzyb1: VIM-3301 adjust cursor offset by sticky panel height
- 1819 by 1grzyb1: VIM-2501 take non line heights during scroll adjusting
- 1818 by 1grzyb1: VIM-2529 Don' scroll after incremental search finish
- 1815 by 1grzyb1: VIM-1638 Add commands to resize windows
2.37.0, 2026-06-02
Features:
- VIM-2078 Added abbreviations support —
:iabbrev lhs rhs(insert mode),:cabbrev lhs rhs(command line),:abbreviate lhs rhs(both); supports<expr>for expression-based expansion,-bufferscope,:unabbreviate, and:abclear - VIM-1984 Added built-in
CamelCaseMotionextension — sub-word motions<leader>w,<leader>b,<leader>e,<leader>geand text objectsi<leader>w,i<leader>b,i<leader>e,i<leader>gethrough CamelCase and snake_case word boundaries; activate withPlug 'bkad/CamelCaseMotion'andlet g:camelcasemotion_key = '<leader>'
Fixes:
- VIM-4245 Fixed block-visual operations freezing the editor in split mode
- VIM-4238 Fixed macro execution applying keystrokes to wrong editor when the search window changes the focused editor during macro replay
Merged PRs:
- 1813 by 1grzyb1: VIM-1984 Implement CamelCaseMotion plugin
- 1811 by 1grzyb1: Fix(VIM-4245): Batch caret events in block-visual to unfreeze split mode
- 1810 by 1grzyb1: VIM-2078 support abbreviations in ideavim
- 1804 by 1grzyb1: VIM-4238 Track current editor in macro
2.36.0, 2026-05-22
Features:
- VIM-480 Added built-in
functextobjextension — text objects for method/function definitions:am(a method),aM(a Method including JavaDoc/annotations),im(inner method body); activate withset functextobj - VIM-480 Added built-in
classtextobjextension — text objectacselects the entire class definition; activate withset classtextobj - New VimScript functions:
maparg(),mapcheck(),maplist(),hasmapto(),mapset() - New VimScript functions:
digraph_get(),digraph_getlist(),digraph_set(),digraph_setlist()— query and modify digraph mappings programmatically - VIM-833 Added
q:,q/, andq?commands — open command/search history window for editing and re-executing previous commands - New VimScript history functions:
histadd(),histget(),histnr(),histdel()— query and modify command/search/expression history programmatically - VIM-1326 Added built-in
abolishextension —cr<x>coercions to recase words (crssnake_case,crm/crpMixedCase/PascalCase,crccamelCase,cru/crUUPPER_SNAKE,cr-/crkkebab-case,cr.dot.case,cr<Space>space case,crtTitle Case);:Subvert/:Sfor case-aware substitution with brace alternatives ({a,b,c});:Abolishfor case-aware insert-mode abbreviations with-buffer/-cmdline/-delete/-search/-substitutesubcommands; activate withPlug 'tpope/vim-abolish'
Fixes:
- VIM-4245 Fixed undo grouping for repeated insert, block insert, and dot-repeat in split mode — a single
unow reverts one Vim command instead of stepping through intermediate backend edits - VIM-4235 Fixed
:win Rider/split mode not triggering IDE Actions on Save, such as Reformat Code on Save - VIM-4225 Fixed vim-sneak op-pending mode mappings — now uses
z/Zinstead ofs/Sto match actual vim-sneak behavior and maintain compatibility with vim-surround - VIM-4104 Fixed
<Tab>now moves to next component in single-line editors and embedded dialogs when not explicitly mapped - VIM-768 Fixed
<C-U>in insert mode not preserving indentation — e.g.,A<C-U>now correctly deletes only text typed since entering insert mode, keeping existing indentation - Fixed command/search history not being restored after IDE restart
- Fixed empty command line being saved to command history
- Fixed
histget()with omitted index — now returns the last history entry per Vim spec - Fixed compatibility for external plugins using
MappingMode.NXOmapping mode constant
Merged PRs:
- 1801 by 1grzyb1: VIM-4245 Fix repeat-insert undo grouping so one
ureverts one logical change - 1800 by 1grzyb1: VIM-4235 use native saveFile action in :w
- 1799 by 1grzyb1: VIM-4245 group repeatInsert and insertPreviousInsert into single undo
- 1790 by 1grzyb1: Add Abolish plugin
- 1788 by citizenmatt: Restore compatibility for external plugins
- 1787 by 1grzyb1: VIM-833 implement command history actions
- 1781 by AndDe-gourav: Fix Incorrect behavior of C-u in insert mode (VIM-768)
- 1775 by citizenmatt: Add history functions
- 1772 by 1grzyb1: VIM-480 add support for a method and a class vim object
- 1749 by citizenmatt: Add digraph Vim functions
- 1746 by citizenmatt: Add mapping functions
2.35.0, 2026-05-14
Features:
- VIM-519 Added
g;andg,commands - navigate the change list to jump to previous (g;) or next (g,) edit location - VIM-258 Added command name completion in ex commands - press
<Tab>to cycle through matching command names (e.g.,:e<Tab>shows:edit,:earlier, etc.) - VIM-3975 Added
mode()VimScript function - returns the current editing mode (e.g.,'n'for normal,'i'for insert,'v'for visual,'R'for replace)
Fixes:
- VIM-4217 Fixed mode widget popup customization settings (colors, theme) not being persisted between IDE restarts
- VIM-4226 Fixed race condition crash when the editor is disposed while the ex panel is open
- VIM-4224 Fixed
:seflag now properly suppresses "Pattern not found" errors - e.g.,%s/\s\+$//eno longer errors when there is no trailing whitespace - VIM-4196 Fixed NERDTree file selection not being restored after pressing
<Esc>to cancel a/speed search - VIM-4229 Fixed
:editcommand failing to open files when the filename has trailing whitespace - VIM-4223 Fixed
:hiabbreviation incorrectly running:hide(closing editor) instead of:highlight - VIM-4184 Fixed PRIMARY clipboard (middle-click paste) on Wayland — now updates correctly during visual selection and no longer causes IDE flickering
- VIM-4231 Fixed pasting from clipboard in visual selection
- VIM-4233 Fixed race condition when typing
/twice quickly causing focus issues in the ex entry panel - Fixed IdeaVim entering broken state when a VimScript extension plugin fails to initialize
Merged PRs:
- 1784 by 1grzyb1: VIM-4184 remove wl-copy from primary writers
- 1776 by 1grzyb1: Fix(VIM-4231): pasting from clipboard in visual selection
- 1774 by 1grzyb1: Fix(VIM-4233): focus ex entry panel race condition
- 1771 by 1grzyb1: VIM-4229 Remove trailing spaces in edit command
- 1770 by 1grzyb1: VIM-4223 proper hide command abbreviation
- 1761 by 1grzyb1: VIM-4217 Persist widget state
- 1753 by 1grzyb1: Fix(VIM-4184): mirror PRIMARY on Wayland via xclip/wl-copy
- 1747 by 1grzyb1: feat(VIM-519): cycle through recent edits with g; and g,
- 1745 by 1grzyb1: feat(VIM-258): tab command completion
- 1744 by 1grzyb1: fix(VIM-4226): check if editor is disposed on focus
- 1741 by 1grzyb1: fix(VIM-4224): respect e flag in search patterns
- 1740 by 1grzyb1: feat(VIM-3975): support vim mode() function
- 1739 by 1grzyb1: fix(VIM-4196): restore file selection after esc in nerdtree
- 1738 by 1grzyb1: fix(VIM-4211): commit window work with conectional commits plugin
2.34.0, 2026-05-04
Changes:
- No functional changes from 2.33.0; published as a re-release of the same commit.
2.33.0, 2026-04-29
Features:
- VIM-1693 Added
:autocmdcommand - run Ex commands on editor events such asBufRead,BufWrite,BufEnter,BufLeave,InsertEnter,InsertLeave,WinEnter,WinLeave,FocusGained,FocusLost, andFileType; supportsaugroupand file pattern matching (e.g.,autocmd BufWritePre *.py echo "saving python")
Fixes:
- VIM-4197 Fixed Vim features (e.g.,
f,w, text objects) not working in Java files decompiled from Kotlin class files - VIM-4112 Fixed undo after block-visual edit (
<C-V>...x,<C-V>...c,<C-V>...I) leaving stray carets in normal mode - VIM-4195 Fixed settings not being saved in remote development (split) mode
- VIM-4180 Fixed ReplaceWithRegister plugin's default
gr/grrmappings overriding user-defined key mappings - VIM-4202 Fixed
<S-Tab>being intercepted by IdeaVim - users can now remap<S-Tab>to other IntelliJ actions - VIM-4202 Fixed
gcc/gc{motion}commentary leaving editor in incorrect mode in Rider/CLion split mode - VIM-4202 Fixed
gcc/gc{motion}commentary not adding space after//prefix in C/C++/C# files in Rider/CLion split mode - VIM-4115 Fixed NullPointerException in
CommandKeyConsumerwhen pressing Esc after disabling and re-enabling IdeaVim with an open command line - VIM-4209 Fixed
<Esc>not exiting insert mode in Rider/CLion when a<C-Space>completion popup intercepts the key before IdeaVim - VIM-4211 Fixed IdeaVim not working in the Git commit window
- VIM-4211 Fixed IdeaVim not working in Git commit window when the Conventional Commits plugin is installed
- VIM-4219 Fixed NullPointerException when IdeaVim is being disabled/unloaded
- VIM-4221 Fixed error sound being played on each keypress when
incsearchis enabled and the typed pattern is an invalid regex - Fixed
<Esc>not properly exiting insert mode in Rider/CLion when canceling a completion lookup - Fixed
IndexOutOfBoundsExceptionwhen using:commandwith-nargsoption but without a command name - Fixed spurious beep when pressing
<Esc>to cancel register selection in normal mode (after pressing") - Fixed NERDTree navigation (
j/k/G/gg/p/<C-J>/<C-K>) poor performance in split mode - navigation now uses Swing actions directly instead of going through backend RPC - Fixed NERDTree
gs/gipreview split commands to keep focus on the tree
Merged PRs:
- 1730 by 1grzyb1: FIX(VIM-4221) Don't make angry sounds on search
- 1728 by 1grzyb1: VIM-4202 Add space after c langauges comments
- 1727 by 1grzyb1: FIX(VIM-4219) check for in VimPLugin is not null
- 1720 by 1grzyb1: fix: make ideavim work in commit window
- 1717 by 1grzyb1: Fix(VIM-4209): handle esc in rider before popup
- 1704 by 1grzyb1: VIM-4202 Don't intercept all
- 1703 by 1grzyb1: VIM-4202 Fix state after commentary action
- 1700 by 1grzyb1: VIM-4139 Compute nesting depth for fold regions
- 1699 by 1grzyb1: VIM-4112 collapse restored carets after undo of block-visual edit
- 1696 by citizenmatt: VIM-4197 Fix missing Vim features in Java files decompiled from Kotlin class files
- 1695 by 1grzyb1: VIM-1693 Implement autocmd
- 1690 by 1grzyb1: Make nerdtree work without calling backend actions
2.32.0, 2026-04-16
Includes changes that originally shipped in 2.31.0 (which was unlisted) and the 2.31.1, 2.32.1 patch releases.
Features:
- VIM-1158 Added
gwcommand - reformat code likegqbut preserving the cursor position - VIM-268 Added file name completion in ex commands - press
<Tab>/<S-Tab>to cycle through file matches in:edit,:split,:vsplit,:write,:read,:source, and:findcommands; use arrow keys to navigate the completion panel
Fixes:
- VIM-4176 Fixed race condition in single-line output panel that could cause
*search wrapping to behave unreliably - VIM-4175 Fixed search "not found" showing previous "Hit ENTER" text alongside the error - panel is now cleared before displaying errors like "E486: Pattern not found"
- VIM-4135 Fixed IdeaVim not loading in Rider
- VIM-4134 Fixed undo in commentary -
gcc/gc{motion}changes are now properly grouped as a single undo step - VIM-4134 Fixed
=(format/auto-indent) action in split mode - VIM-4134 Fixed global marks causing errors when used inside write actions (e.g., during document modifications)
- VIM-4172 IdeaVim is now disabled in Python Console to prevent key interference
- VIM-4113 Fixed Visual mode commands (e.g.,
:'<,'>sort) failing when run off the Event Dispatch Thread - VIM-4016 Fixed
:editcommand when project has no source roots - VIM-3727 Fixed Enter and arrow keys not working in Python Console in split mode
- VIM-3473 Fixed "Reload .ideavimrc" action in remote development (split) mode - no longer causes File Cache Conflict dialogs
- VIM-2821 Fixed undo grouping when repeating text insertion with
.in remote development (split mode) - VIM-1705 Fixed window-switching commands (e.g.,
<C-w>h) during macro playback - Fixed
pumvisible()function returning incorrect result (was inverted) - Fixed
<Esc>not exiting insert mode after<C-Space>completion in Rider - Fixed compatibility issues with external plugins (e.g., IdeaVim-EasyMotion, multicursor)
- Fixed recursive key mappings (e.g.,
map b wbb) causing an apparent infinite loop -maxmapdepthlimit now properly terminates the entire mapping chain - Fixed visual marks (
<and>) position tracking after text deletion -gvnow re-selects correctly - Fixed
IndexOutOfBoundsExceptionwhen using text objects likea)at end of file - Fixed
\/,\?, and\&in Ex command ranges now correctly report E35/E33 errors when no previous search or substitute pattern exists, instead of crashing
Merged PRs:
- 1688 by 1grzyb1: VIM-4172 Disable ideavim in Python Console
- 1687 by 1grzyb1: Restore old VimPLugin method signatures
- 1685 by 1grzyb1: VIM-3727 Fix Python console Enter and arrow keys in split mode
- 1682 by 1grzyb1: VIM-268 Complete file names in edit command
- 1665 by 1grzyb1: Fix visual selection commands failing off-EDT due to nested write-in-read action
- 1632 by chylex: Fix pumvisible returning opposite result
- 1615 by 1grzyb1: Fix IndexOutOfBoundsException in findBlock when caret is at end of file
- 1613 by 1grzyb1: VIM-3473 Sync ideavim in remdev
- 1608 by 1grzyb1: VIM-4134 format using = action in split mode
- 1585 by 1grzyb1: Break in case of maximum recursion depth
- 1548 by 1grzyb1: VIM-1158 Add
gwto reformat code with preserving the cursor position
2.30.0, 2026-02-24
Features:
- VIM-1595 Added support for
:readcommand - insert file content below current line (e.g.,:read file.txt,0read file.txt) - VIM-1595 Added support for
:read!command - insert shell command output below current line (e.g.,:read! echo "hello")
2.29.0, 2026-02-04
Features:
- VIM-566 Added support for
zAcommand - toggle folds recursively - VIM-566 Added support for
zrcommand - increase fold level to show more folds - VIM-566 Added support for
zmcommand - decrease fold level to hide more folds - VIM-566 Added support for
zfcommand - create fold from selection or motion - VIM-566 Added support for
:set foldleveloption - control fold visibility level - New VimScript functions:
add(),call(),extend(),extendnew(),filter(),flatten(),flattennew(),foreach(),has_key(),indexof(),insert(),items(),keys(),map(),mapnew(),reduce(),remove(),slice(),sort(),uniq(),values()
Fixes:
- VIM-4105 Fixed
a"a'`a`` text objects to include surrounding whitespace per Vim spec - VIM-4097 Fixed
<A-n>(NextOccurrence) with text containing backslashes - e.g., selecting\IntegerFieldnow works correctly - VIM-4094 Fixed UninitializedPropertyAccessException when loading history
- Fixed
<Esc>in search bar no longer inserts^[literal text when search is not found - panel is now properly closed - Fixed comparison of String and Number in VimScript expressions
- Fixed high CPU usage while showing command line
Merged PRs:
- 1442 by Matt Ellis: Fix high CPU usage while showing command line
- 1414 by Matt Ellis: Refactor/functions
2.28.0, 2025-12-09
Features:
- Hints system for keyboard-driven UI navigation - enable with
:set VimEverywhere, then pressCtrl+\to show hints on UI components - VIM-4004 Support for
<F13>through<F24>keys - VIM-2143 Environment variables expansion in
:source,:edit,:writeand other file commands (e.g.,:source $HOME/.ideavimrc) - Command line
<C-R>commands: insert register (<C-R>{register}), word (<C-R><C-W>), WORD (<C-R><C-A>), line (<C-R><C-L>), filename (<C-R><C-F>) - New VimScript functions:
count(),index(),min(),max(),range(),repeat(),char2nr(),nr2char(),trim(),reverse(),getline(),deepcopy(),copy(),string() - Support for
letcommand value unpacking (e.g.,let [a, b] = [1, 2]) - Support for environment variables in Vim expressions (e.g.,
echo $HOME) - Support for recursive values in Vim datatypes
Fixes:
- VIM-4072 Fixed error log when sourcing non-existent file
- VIM-4073 Fixed cursor position with inlay hints during
f/tmotions - VIM-3981 Fixed
:set noNERDTreecommand - VIM-4028 Fixed plugin registration error that caused exceptions on startup
- Fixed
vmapto correctly apply to both visual and select modes - Fixed expression parser precedence issues for ternary and falsy operators
Changes:
- Minimum supported IntelliJ platform version is now 2025.3
Merged PRs:
- 1385 by Matt Ellis: Implement unpacking of values in a let command
- 1384 by Matt Ellis: Evaluate environment variables as part of a Vim expression
- 1383 by Matt Ellis: Support recursive values in Vim datatypes
- 1373 by Matt Ellis: Fix some precedence issues in the expression parser
Changelog was not maintained for versions 2.10.0 through 2.27.0
2.9.0, 2024-02-20
Fixes:
- VIM-3055 Fix the issue with double deleting after dot
Merged PRs:
2.8.0, 2024-01-30
Fixes:
- VIM-3130 Change the build version to 2023.1.2
- VIM-3168 Do not switch to block caret after enter if the IdeaVim is disabled
- VIM-3165 Do not process enter key as IdeaVim shortcut if it's not an actual keypress
- VIM-3159 Shift-enter now works in normal mode again
- VIM-3157 Do not invoke enter in invokeLater for python console
- VIM-3195 Fix escape in injected editor
- VIM-3190 Do not use octopus handler if the enter key is used with modifiers like shift or control
- VIM-3203 Split action not works in normal mode
- VIM-3184 Revert "VIM-3184: Temporally disable new handlers for the thin client"
- VIM-3186 Do not multiply the enter action by the amount of carets
- VIM-3177 Formatting of commit message works again
- VIM-1611 actions related to resolving conflicts doesn't seem to work
- VIM-3204 Add checker that verifies the configuratin of the keymap
- VIM-3084 Double update for the status bar icon
- VIM-3176 Reselecting visual selection after pasting above it select wrong lines
- VIM-3206 Disable both copilot suggestion and insert mode on a single escape
- VIM-3090 Cmd line mode saves the visual mode
- VIM-3085 Open access to VimTypedActionHandler and VimShortcutKeyAction
- VIM-3260 Processing the offsets at the file end
- VIM-3183 Execute .ideavimrc on pooled thread
Merged PRs:
- 763 by Sam Ng: Fix(VIM-3176) add test for restore selection after pasting in/below s…
- 772 by chylex: Prevent code completion popup from appearing after running a macro
- 787 by Leonid Danilov: Added "Which-Key" to Plugins
- 778 by lippfi: Showmode
- 788 by Matt Ellis: Refactor VimOptionGroupBase
2.7.0, 2023-11-07
Fixes:
- VIM-2933 Reloading/sourcing .ideavimrc does not initialize new plugins
- VIM-3138 Do not try to register disposer if the caret is already disposed
Merged PRs:
- 734 by Matt Ellis: Support
~/on Windows - 736 by chylex: Fix(VIM-2933): Reloading/sourcing .ideavimrc does not initialize new plugins
2.6.3, 2023-10-30
Changes:
- 2.6.0 and 2.6.1 releases are broken. Version 2.6.3 reverts IdeaVim plugin to the working state as for 2.5.1.
2.6.0, 2023-10-27
This version of IdeaVim contains a lot of issues. Version 2.6.3 reverts these changes.
Features:
ShowHoverInfoaction can be used in mappings to open a tooltip that is shown by mouse hovering | VIM-2106hasVim Script function supports the most common OS checks: win32, win64, linux, mac, macunix, osx, osxdarwin, bsd, sun, unix- See https://github.com/JetBrains/ideavim#vim-script for details about Vim Script
Fixes:
- VIM-3060 Clipboard interaction stopped working
- VIM-3095 Fix missing ellipsis digraph
- VIM-2562 Fix hang with multi-width chars in command line
- VIM-696 Vim selection issue after undo
- VIM-1639 Ctrl-o and Ctrl-i jumping in files of different projects
Merged PRs:
- 697 by Matt Ellis: Support per-window "global" values for local-to-window options
- 717 by Matt Ellis: Fix(VIM-2562): Fix hang with multi-width chars in command line
- 732 by pWydmuch: Fix md links in doc
- 733 by Matt Ellis: Add support for ShowHoverInfo action to 2023.1 and 2023.2
- 729 by chylex: Add operating system type to
has()function - 726 by Matt Ellis: Fix range for fall back comment mode
2.5.0, 2023-09-01
Fixes:
- VIM-802 IdeaVim vs. Vim: discrepancies in using registers
- VIM-2246 X11/Xorg Primary selection register "* not supported
- VIM-2313 VIM-2318 VIM-2666 VIM-2951 IdeaVim works correctly in read-only editors like log or tests output.
Merged PRs:
- 666 by Matt Ellis: Improve formatting of
:setcommand output - 667 by Matt Ellis: Eagerly initialise local options and introduce option scope
- 672 by Matt Ellis: Fix issue adding back hidden status bar widget
- 668 by ludwig-jb: Handle unicode grapheme clusters
2.4.0, 2023-07-18
Fixes:
- VIM-2975 Fix the offset after the rendered docs
- VIM-2685 Register command outputs different values for same registers
- VIM-1294 unvoluntary unfolding when using ideavim
- VIM-2818 Wrong caret position after multicaret paste
Merged PRs:
- 662 by ludwig-jb: Update VimMessages#updateStatusBar to accept VimEditor
- 659 by Sam Ng: VIM-2920 fix select block expansion when enclose boundary is line break
2.3.0, 2023-06-14
Features:
- Matchit now supports PHP files | VIM-2678
Fixes:
- VIM-2909 Fix incorrect file detection while closing diff window
- VIM-2912 Fix focus after :q
- VIM-2930 vim-multiple-cursors + ReplaceWithRegister issue
- VIM-2945 %-movement mismatches braces
- VIM-2953 The previous fix for :q command caused weird behavior of tab closing
- VIM-2964 Fix an issue with leaking caret instance
Merged PRs:
- 616 by Matt Ellis: Refactor/option delegated properties
- 626 by Martin Yzeiri: Matchit bug fixes
- 619 by Matt Ellis: Fix some local options being used as global options
- 638 by Sam Ng: VIM-2615 add support to sort u command
- 646 by Sam Ng: VIM-1990 fix repeat delete find or till wrong MotionType
- 649 by Martin Yzeiri: Add Matchit support for PHP
2.2.0, 2023-04-20
Features:
- Now every secondary caret has its own marks. You can use marks and
gvin multiple-caret mode now.
Fixes:
- VIM-1829 Fix marks when moving lines up/down
- VIM-2130 Fix marks when moving lines up/down
- VIM-2428 Fix marks when moving lines up/down
- VIM-2686 Add individual mark storage for each secondary caret
- VIM-2840 Replace with register does not work with count
- VIM-658 Stop macro on error
- VIM-2787 Save ideavimrc loading
- VIM-2850 Marks exception during IDE startup
- VIM-2804 IdeaVim multiple-cursors copy and paste issue when "set clipboard+=unnamed"
- VIM-1768 Delete surrounding character while in multiple cursors mode
- VIM-282 Cursor line wrapping support (whichwrap)
- VIM-2315 Fix overlapping mappings execution
- VIM-44 Unify navigation history between ideavim and idea
- VIM-1735 Fix enabling mulple carets after line selection
- VIM-2881 ReplaceRegister does no longer worker with MultiCursor
- VIM-2244 nnoremap mapping doesn't work correctly
- VIM-2885 "v:searchforward" does't work for IdeaVim
- VIM-2733 vim-surround emulation interacts incorrectly with unmatched quotes on previous lines
- VIM-2884 Moving multiple lines in visual mode is not working
- VIM-2868 Pasting in visual mode with P should not replace yank register like when pasting with p
- VIM-2819 Move command works incorrectly
- VIM-795 Ctrl-w + h doesn't alway work (window navigation to the left window)
- VIM-1551 Surround: line surround not working
- VIM-1746 IdeaVim Surround removes unwanted characters
- VIM-1750 Surround with tag wrong position
- VIM-2286 Set surround not working for me as expected
- VIM-2433 Do not clear clipboard after inserting with ideaput
- VIM-2896 Correct ordering of handlers
- VIM-2912 Fix focus after :q
- VIM-2909 Fix incorrect file detection while closing diff window
Merged PRs:
- 589 by Matt Ellis: Refactor option usage and introduce accessor API
- 604 by Dominic Palmer: VIM-2773: Include empty lines in the selection when dragging backwards from EOL
- 603 by Dominic Palmer: VIM-2773: Prevent viewport displacement on undo
- 602 by Matt Ellis: Refactor options service
- 612 by Dani Sevastianov: Fix quick-scope setup documentation
- 617 by Silence Tai: Fix dispose operation
2.1.0, 2023-01-10
Features:
- Add IdeaVim tutor. You can access it via the status bar icon.
Fixes:
- VIM-2797 Introduce variable to mute default argtextobj mappings
- VIM-758 Support d mappings
- VIM-2577 Fix paste at the end of notebook cell
- VIM-2813 Migrate update checker to VimStandalonePluginUpdateChecker
- VIM-2833 Fix rare deadlock during put in insert mode from clipboard
Merged PRs:
- 558 by Matt Ellis: Fix incorrect normalising for trailing inlay
- 554 by Matt Ellis: Refactor "last column" calculations
- 553 by Matt Ellis: Rearrange and rename some code in engine
- 560 by Runinho: Fix(VIM-2577) paste not working at end of notebook cell
- 571 by Ada: Remove the redundant quotation mark at the end of "packadd matchit" command
- 561 by Matt Ellis: Fix incremental search not scrolling to current match
- 559 by Runinho: Fix(VIM-2760) notebookCommandMode detection
- 579 by Martin Yzeiri: VIM-2799: Add Matchit support for cshtml files
- 580 by Martin Yzeiri: Matchit: Add more Rider file types
- 583 by Matt Ellis: Introduce ScrollGroup
- 586 by Patrick Elmquist: Fixed number references in Tutor
2.0.0, 2022-11-01
Changes:
- IdeaVim changes license from GPL-2.0 or later to MIT. VIM-2782
1.12.0, 2022-11-01
Fixes:
- VIM-1758 Commentary plugin in rider
- VIM-1903 Autoindent now works in rider
- VIM-2744 Fix undo from ex line
- VIM-2749 Fix :tabn and :tabN commands
- VIM-2718 Fixed case where the primary caret was changed
- VIM-2766 Move NERDTree update to background thread
- VIM-2768 Refactor listeners
- VIM-2776 Use filename index for file search
Merged PRs:
- 550 by Matt Ellis: Fix(VIM-2778) Remove override of editor scroll setting
1.11.0, 2022-08-09
Features:
- Add
gcucommand for Commentary plugin - Add
:Commentarycommand, which works great for commands such as:%g/fun/Commentary - Support
gc– commentary text objects. E.g.dgc: delete commented text. - Support
redo-register feature| VIM-2643 | viminfo
Changes:
- Uses the same mappings as Commentary, so custom bindings for the Vim plugin will work with IdeaVim, too.
E.g.
<Plug>Commentaryinstead of<Plug>(CommentMotion). Old mappings are maintained for compatibility. - If you open
~/.ideavimrcin IDE, remove a mapping, and reload the config using the reload button, the mapping will actually be unmapped. - New vim (and IdeaVim) behaviour:
ci(& friends searches for the brackets in the line.
Fixes:
- VIM-2587 Use ctrl-6 as ctrl-^
- VIM-2590 Fix caret shape in PyCharm
- VIM-2553 Substitute consecutive matches
- VIM-1687 Support count for
gcc - VIM-2381 Fall back to line comment if block comment is not available
- VIM-2589 Add
gctext object - VIM-2604 Update action execution rules
- VIM-2654 Add support for
returnwithout expression - VIM-2630 Fix IDE freeze
- VIM-2661 Fix repeating the
@@command - VIM-2668 Fix omitted numbers in
tabmcommand - VIM-2595 Support plugins in macro execution
- VIM-2671 Fix using plugins from mappings
- VIM-2675 Fix numbering register in visual mode
- VIM-744 Add count to undo/redo
- VIM-1862 Fix command history
- VIM-2227 Wrong behavior when deleting / changing surround with invalid character
- VIM-2691 Save file on :w
- VIM-2710 Show options value on
set opt - VIM-913 Partially fix the issue with macros and autocompletion
- VIM-2723 Move focus to editor after :q
- VIM-2728 Give access to global variables
Merged PRs:
- 468 by Thomas Schouten: Implement UserDataHolder for EditorDataContext
- 483 by Simon Rainer: Fix(VIM-2553): Substitute consecutive matches
- 488 by Martin Yzeiri: Add Matchit support for the C family of languages
- 493 by Matt Ellis: Improvements to Commentary extension
- 494 by Matt Ellis: Cleanup pre-212 CaretVisualAttributes compatibility code
- 504 by Matt Ellis: Minor bug fixes
- 519 by chylex: Fix(VIM-2227): Wrong behavior when deleting / changing surround with invalid character
- 525 by Matt Ellis: Improve handling of fractional width fonts
- 526 by Alex Pláte: Create gradle.properties
- 528 by chylex: Implement partial code completion support in macros
- 531 by Matt Ellis: Consolidate doTest methods
1.10.0, 2022-02-17
Features:
Fixes:
- VIM-2502 Fix the shape of new carets
- VIM-2499 Fix mapping to esc
- VIM-2500 Fix esc for normal mode
- VIM-2523
icommand for the folder in the project tree - VIM-2471 Multiple [{ and ]} actions
- VIM-2504 Fix esc with using python notebooks
- VIM-2540 Fix option listeners
- VIM-2548 Fix paste
- VIM-2470 Fix incorrect reset of cursor shape
- VIM-2223, VIM-1684, VIM-2491 Fix
gv
Merged PRs:
- 441 by DanEEStar: Add Matchit support for Vue.js files
- 440 by Kevin Suen: Add matchit support for handlebars
- 448 by Michael Schertenleib: Support custom element names in vim-surround
- 435 by Piotr Mikulski: Print stderr when running a command just like vim does
- 449 by Lonre Wang: Typo fix
- 453 by Matt Ellis: fix(VIM-2470): Fix incorrect reset of cursor shape
- 461 by David Dadon: Add shortcut to ideajoin example
1.9.0, 2021-12-10
Features:
Fixes:
- VIM-2442 Fix
!command - VIM-2255 Fix reload icon on windows
- VIM-2199 Fix autocompletion for AppCode
- VIM-2445 Fix spaces in range
- VIM-2450 Fix set command
- VIM-2451 Fix comments
- VIM-2452 Fix augroup
- VIM-2453 Fix split command
- VIM-2397 Fix dollar motion as an operator
- VIM-2432 Fix ctrl-d and ctrl-u motions with scrolloff
- VIM-2462 Reset caret shape when disabling plugin
- VIM-2449 Fix
Ifor one-line block selection - VIM-2213 Close VCS change popup on esc
- VIM-2435 Close diff window on esc
- VIM-2461 Show action id before action execution
- VIM-2026 Keep global marks after restart
- VIM-1691 Fix default path for
!command - VIM-2487 VIM-2434 Fix IdeaVim in PyCharm notebooks
Merged PRs:
- 390 by chylex: [VIM-2255] Missing reload icon in .ideavimrc on Windows
- 391 by Matt Ellis: fix(VIM-2432): handle scrolloff with and
- 401 by Matt Ellis: Reset caret shape when disabling plugin
- 407 by eugene nizienko: Video recording for ui tests
- 418 by chylex: Fix compile errors in unit tests on Windows
1.8.0, 2021-10-27
Features:
- Support
matchit.vimextension for Ruby and XML/HTML VIM-539 | matchit.vim - IDE-specific configuration VIM-1573
- Call command VIM-2416
Fixes:
- VIM-2417 Fix bars in substitute command
- VIM-2425 Fix reload button
- VIM-2422 Fix freeze
- VIM-2420 Fix freeze
- VIM-2359 Fix selection with VimExchange
- VIM-2426 Fix marks in commands
- VIM-2438 Fix marks in commands
- DISCUSSION-386 Fixed command with no spaces before argument
Merged PRs:
- 337 by Matt Ellis: guicursor!
- 343 by Martin Yzeiri: Emulate matchit.vim
- 387 by Petar Guglev: Update README.md link
1.7.2, 2021-09-30
Fixes:
- VIM-2405 ExExceptions during
map <expr>execution are now displayed in status bar - VIM-2406 Fix go to line command
- VIM-2408 Fix vim script parser
- VIM-2409 Fix substitute command
- VIM-2411 Fix vim script parser
1.7.1, 2021-09-20
Fixes:
- VIM-2400 Fix vim script parser
- VIM-2401 Exceptions occurred during execution of
map<expr>are now shown in status bar - VIM-2404 Fix multiple pastes from unnamed clipboard
1.7.0, 2021-09-16
Features:
- New engine for Vim Script execution. Check out the GitHub Discussion.
- Mapping keys to expressions (map <expr>). See
:h map-expression.
Fixes:
- VIM-2368 Do not remove selection on right click
- VIM-2392 Fix possible out of bounds exception
- VIM-2387 Fix coping with unnamed and ideaput
Changes:
- New versioning scheme. Current version is
1.7.0instead of0.70.
Merged PRs:
- 349 by eugene nizienko: Run UI test ci
0.69, 2021-07-20
Features:
Fixes:
- VIM-2317 Fix memory leak
- VIM-1357 VIM-1566 Fix external filters
- VIM-2336 Fix repeat for the
Tmovement - VIM-1192 Fix dollar motion from single command
- VIM-1672 IdeaVim correctly populates clipboard history
- VIM-2351 Correctly select last character when selecting with mouse
Merged PRs:
- 332 by Matt Ellis: VIM-1357+VIM-1566: Use OS shell to run filter command
- 333 by Michal Placek: VIM-1062
- 334 by Michal Placek: vim-2335 Support for navigation to previous buffer with :b#
0.68, 2021-06-22
Features:
- Support
:globaland:vglobalcommands VIM-831, VIM-832 - Support
vim-indent-objectextension VIM-1151 | vim-indent-object - Support
:printcommand
Fixes:
- VIM-2308 Go to next tab doesn't move scrolling
Merged PRs:
- 261 by Shrikant Sharat Kandula: New extension: Indentation based text objects
- 308 by Matt Ellis: Fix unnecessary caret movement when switching tabs
0.67, 2021-05-20
Features:
- Support
sethandlercommand to configure shortcuts conflicts via~/.ideavimrcfile. See docs. - Support
vim-paragraph-motionextension VIM-2290 | vim-paragraph-motion - Add "Reset Handlers" button for "Conflicting Shortcuts" setting table
Changes:
- Rename "Vim Emulation" in settings to "Vim"
Fixes:
- VIM-2230 Tweak caret position with inline rename options inlay
- VIM-2177 Fix scrolling issues near bottom of file
- VIM-2276
:lsreturns correct path for files on Microsoft Windows. - VIM-1953 Execute live testing for
:wcommand - VIM-2284 Values are not duplicated in set command
- VIM-2289 Fix
<End>command behaviour - VIM-1476 Last inserted text is stored in
.register - VIM-2295 Fix
<S-Space>in insert mode with an existing mapping - VIM-1401 IdeaVim triggers readonly handler
- VIM-1856 Support defining shortcuts in .ideavimrc
- VIM-1523 Allow different shortcut handlers in different modes
Merged PRs:
- 280 by Matt Ellis: Caret position and view scrolling fixes
- 289 by MichalPlacek: VIM-2276 ls returns "absolute path" for files on Microsoft Windows.
- 295 by MichalPlacek: VIM-1476
0.66, 2021-04-09
Not a lot of changes for this release. Focused on internal improvements.
Features:
- Support
startoflineoption
Fixes:
- VIM-2238 Fix
Mcommand for small files
Merged PRs:
- 275 by Matt Ellis: Fix edge cases for H, L and M and introduce 'startofline' option
- 276 by Matt Ellis: More refactoring of SearchGroup
0.65, 2021-02-17
Features:
-
Support
NERDTreeextension VIM-1042 | NERDTree -
Support
maxmapdepthoption to define the maximum depth of mappings
Fixes:
- VIM-2202 Fix macro recording for ex command and search
- VIM-1799 VIM-1794 Special characters are not interpreted on yanking
- VIM-2218 Fix some shortcuts for 2021.+
- VIM-2217 Fix adding new line at the end of the file for the AppCode
- VIM-2220 Do not try to get a commandState for null editor
- VIM-2153 Fix storing special characters after IDE closing
Merged PRs:
- 269 by 大牙(Henry Zhu): fix invalid link of submodule docs
0.64, 2020-12-23
Merged PRs:
- 260 by Matt Ellis: Refactor SearchGroup
Fixes:
- VIM-2194 Fix caret shape during editing a new file
0.63, 2020-12-16
Changes:
- Update the minimal required IJ version: 2020.2+
Fixes:
- CWM-927 Fix typing for CodeWithMe and IdeaVim
Merged PRs:
- 259 by Vladimir Petrenko: CWM-927 disable vim for client's hidden editor on host
0.62, 2020-12-15
Features:
Changes:
octalis now disabled by default fornrformats. VIM-2181
Fixes:
- VIM-2113 Fix
citfor empty tags - VIM-2114 Unnamed register isn't changed after deleting empty tag
- VIM-1475 Enable block caret to be used in insert mode.
- VIM-2170 Fix an alternative range format for
scommand - VIM-1913 VIM-2154 Several fixes for AppCode templates
- VIM-1756 Fix startsel from insert mode
Merged PRs:
- 249 by Jan Palus: VIM-2113 Increase tag range only in visual mode
- 250 by Jan Palus: VIM-2114 Do not override registers when deleting empty range
- 256 by Brandon Conway: Fix typo
- 254 by Grzegorz Antoniak: VIM-1475: Add an option to use block caret in insert mode
- 225 by sumoooru2: Implement cmap
- 258 by Matt Ellis: Show the correct handler class in :map
- 257 by Matt Ellis: Extract SearchHighlightsHelper from SearchGroup
- 251 by Shaun Patterson: VIM-1756: startSel works in insert mode
0.61, 2020-11-12
Features:
- Ability to map IDE actions via the
<Action>keyword. E.g.map <C-K> <Action>(CommentByLineComment). Check outREADME.mdfor the details. IdeaVim: track action Idscommand to find action ids for the:actioncommand. Enable this option in "Search everywhere" (double shift).- Ability to enable extensions using
vim-plugorvundlesyntax.
E.g. to enable commentary extension you can use one of the following commands:This approach is especially handy if you haveset commentary Plug 'tpope/vim-commentary' Plug 'https://github.com/tpope/vim-commentary' Plugin 'tpope/vim-commentary' ....vimrcwith plugins registered viavim-plugorvundle.
Changes:
- Fix
<Esc>for dialogs. Now<Esc>will exit insert / visual mode and close the dialog from normal mode. - Add option to disable IdeaVim in dialogs / single line editors. VIM-765
Useset ideavimsupport=to disable IdeaVim in dialog editors. - Reposition cursor when
scrolloffchanges
Fixes:
- VIM-2150
Shift-Dshould not delete an empty line - VIM-2157 Fix tab with an active template
- VIM-2156 Correct up/down motions with inlays
- VIM-2144 Correct text position after block insert with inlays
- VIM-2158 Fix scrolling when
scrolloffis over half screen height, but less than full height
Merged PRs:
- 255 by Matt Ellis: Fix various scrolling issues
0.60, 2020-10-09
Features:
- Support of
virtualedit=onemore(VIM-844)
Fixes:
- VIM-2097 Do not apply mappings for register selecting
- VIM-2080 Fix S command with count
- VIM-2099 Fix operations with backward inclusive motions
- VIM-2104 Use
sidescrollofffor horizontal offset - VIM-1080 Fix
ztfor virtual space enabled - VIM-1556 Fix horizontal scrolling
- VIM-1770 Fix goto end with large inline hints
- VIM-2110 Fix scrolling for non-monospaced fonts
Changes:
-
:wworks as:waby default. This can be disabled withideawriteoption.Now features like
Prettier on saveorRun on save for fileswould work with:wcommand as well.See VIM-1968.
Merged PRs:
- 248 by Yaohui Wang: Check if project is disposed when editorDeinit
- 242 by Iain Ballard: Partial implementation of virtualedit config
- 252 by Matt Ellis: Fixes for scrolling
0.59, 2020-08-25
Features:
-
vim-highlightedyankplugin emulation (VIM-1970 | vim-highlightedyank). -
VIM-2068
:tabclosecommand
Fixes:
Merged PRs:
- 237 by Adrià Farrés: Reset operator-pending commands on escape
- 241 by Patrick Elmquist: Properly reset when pressing Esc in the middle of command
- 244 by Rieon Ke: Implement tabc[lose] ex command
- 240 by Rieon Ke: add support for putting & editing macros
- 245 by KostkaBrukowa: VIM-1970 | Working solution of plugin vim-highlightedyank
0.58, 2020-07-07
Features:
-
exchangeplugin emulation (VIM-921 | vim-exchange). -
~/.ideavimrcfile can be reloaded using the new floating action. -
Add
:buffercommand.
Changes:
- Support IntelliJ's smooth scrolling. Use "Enable smooth scrolling" checkbox in Preferences | Editor | General to disable.
Fixes:
- VIM-1994 Correct paste after
y}Pcommand. - VIM-1924 Select next occurrence doesn't become block selection.
- VIM-2038 Last line is now accessible in normal mode
- VIM-1934 Line number is not clipped for relative line numbers
- VIM-1852 Line number doesn't flickers for relative line numbers
- VIM-2021 Line numbers don't reactivating
- Fix mappings to
"\<SPACE>"includinglet mapleader="\<SPACE>"
Merged PRs:
- 233 by valis: [VIM-1994] Correct paste after
y}Pcommand. - 224 by pmnoxx: Populate intelij navigation history together with ideavim jumplist.
- 227 by angelbot: Add support for buffer command.
- 230 by fan-tom: VIM-1924.
- 231 by citizenmatt: Support smooth scrolling.
- 239 by citizenmatt: Use new API for relative line numbers
0.57, 2020-04-28
Fixes:
Merged PRs:
- 234 by runforprogram: [VIM-1991] fix >0 number register not work
0.56, 2020-04-09
Features:
ReplaceWithRegisterplugin emulation (ReplaceWithRegister).argtextobj.vimplugin emulation (argtextobj.vim).vim-textobj-entireplugin emulation (vim-textobj-entire).- VIM-434 Add
'showcmd'support, on by default. - Support
ls/buffers/filescommands.
Changes:
- Replace
ideastatusbaroption withideastatusicon. Now you can make the icon gray.
Deprecations:
ideastatusbaroption is deprecated now. Seeideastatusicon.
Fixes:
- VIM-1284 Fix mapping of digits.
- Fix handling of counts on both operator and motion, e.g.
3d2wdeletes 6 words, instead of 32. - Allow mapping of
<C-K>and<C-V>/<C-Q>. - VIM-1899 Add argument to
:registerscommand. - VIM-1835 Macros record input keystrokes instead of mapped keystrokes.
- VIM-1900 Ensure non-printable output for
:registers,:marksand:jumpsis encoded correctly. - VIM-570 Print non-ascii characters in ex panel.
- VIM-926 Fix
<S-Space>mapping. - VIM-1958 Fix
Xcommand for linewise selection. - VIM-1911 Lookup keys respect
IDEhandler. - VIM-1008 Correct
ci{behavior.
0.55, 2020-01-20
Features:
- Surround and Commentary extensions support repeating with a dot command (VIM-1118)
- Support XDG settings standard (VIM-664)
- Add option to remove the status bar icon (VIM-1847)
Fixes:
- VIM-1823 Fix multiple carets with ignorecase
- VIM-1053
VIM-1038
Implement gq+motion. Support some double
gcommands (guu,gUU,g~~). - VIM-1325 VIM-1050 VIM-1627 VIM-1867 Fix bindings for active lookup
- VIM-1845 Show ActionGroup popups
- VIM-1424 CTRL-A doesn't have any restrictions now
- VIM-1454 Fix CTRL-W with the autocompletion lookup
- VIM-1855 Fix initialization error
- VIM-1853 Fix marks for disposed projects
- VIM-1858 Fix imap for autocomplete
- VIM-1362 Search with confirm doesn't scroll down far enough
- VIM-1875 Fix
iskin~/.ideaivmrc - VIM-1874 Fix
set clipboard=unnamedexecution from~/.ideavimrc - VIM-1878 Fix
ccommand after extract method action - VIM-1884 Show quickDoc during popup with
CTRL-J - VIM-987 Fix arrow keys for the NEO keyboard
0.54, 2019-11-20
Features:
- EasyMotion plugin emulation (VIM-820 | Instructions)
- Support surrounding with a function name (link)
- Add
:delmarkscommand (VIM-1720) - Add IdeaVim icon to the status bar (VIM-943)
Changes:
- Remove the default IdeaVim toggle shortcut (CTRLALTV)
- Rename
refactoringvalue ofselectmodeoption toideaselection - Remove
templatevalue ofselectmodeoption and replace it withidearefactormodeoption.
Fixes:
- VIM-1766 Fix disappearing caret in ex entry on Linux
- VIM-1032 Annotations work well with relative line numbers enabled
- VIM-1762 Relative line numbers respect line number theme
- VIM-1717 Fix incorrect scroll location if no match with
incsearch - VIM-1757 Fix incorrect search results when specifying offset as part of search command
- Fix search highlights not showing after deleting last result
- Update current line highlight during incsearch and replace operation
- VIM-1773 Provide fallback error stripe colour if not defined
- VIM-1785 VIM-1731 Fix some problems with yanking to clipboard
- VIM-1781 Fix yanking with dollar motion
- VIM-1772 Fix yanking with
:ycommand - VIM-1685 Fix
ESCfor insert mode - VIM-1752 Fix
ESCfor insert mode - VIM-1189 VIM-927 Fix mappings to black hole register
- VIM-1804 Exit insert move after toggling IdeaVim
- VIM-1749 Tag surround is finished on
> - VIM-1801 Fix j/k motions with inline hints
- VIM-1800 Improve ideamarks option
- VIM-1819 Fix execution of some rider actions
- VIM-1604 Add IdeaVim logo
0.53, 2019-08-07
- VIM-1711 Search is not triggered during surround action
- VIM-1712 Fix
Ycommand for visual mode - VIM-1713 Surround in visual mode put caret in correct position
- VIM-1732 Fix SO after enabling vim mode
- VIM-1710 Fix opening empty file with "relative number" enabled
- VIM-1725 Fix problems with Japanese language
- VIM-1648 Fix exception while substitute with conformation
- VIM-1736 Fix `` for ex panel
- VIM-1739 Fix full-width characters for ex pane
0.52, 2019-07-23
-
Introduce Select Mode.
-
Fixed
:onlycommand -
VIM-1586 Support
:shellcommand -
VIM-801 Support
:tabnextand:tabpreviouscommands -
VIM-1570 Support
g<C-A>andg<C-X>commands for visual mode -
VIM-1119 Fixed 'e' search offset
-
VIM-1587 Fixed end-of-line multi line percent match in visual mode
-
VIM-1303 Fixed "Changing color schemes doesn't change find input"
-
VIM-944 Fixed navigation with keypad arrows
-
VIM-1569 Fixed surround plugin bug by
S<tag attr="attr"> -
VIM-1012 Fixed wrong tab selection after
:q -
VIM-1245 Clear switcher list after
:q -
VIM-1425 Correct
%command -
VIM-1521 Support
commentaryextension -
VIM-907 Fix
va(command -
VIM-1067 Fix repeating of
Acommand -
VIM-1615 Fix
set so=999command and line "bouncing" with inlays -
VIM-1630 Support
:tabonlycommand -
VIM-607 Fix memory leaks
-
VIM-1546 Storing TAB key as input
-
VIM-1231 Get indent from PsiFile
-
VIM-1633 Fixed sequential text object commands in visual mode
-
VIM-1105 Added the
:commandcommand -
VIM-1090 Fixed tag motion with duplicate tags
-
VIM-1644 Fixed repeat with visual mode
-
Fixed invoking IDE actions instead of command line actions with same shortcuts
-
VIM-1550 Fixed leaving command line mode on backspace
-
Fix insert position of
<C-R>in ex commands -
Command line editing caret shape and insert digraph/register feedback
-
VIM-1419, VIM-1493 Correctly set focus when handling cmode mapping
-
Fix incorrect handling of subsequent key strokes after ex command line loses focus
-
VIM-1240 Improve UI of ex command line and output panel
-
VIM-1485 Remove incorrect gap between ex command line label and text
-
VIM-1496 Fix focus for Recent Files action
-
VIM-1275 "Change In Brackets" for string
-
VIM-941 Fix tab for visual block mode
-
VIM-1002 Fix dot command for tab
-
VIM-1426 Correct
%command -
VIM-1655 Deleted word should is not yanked with Ctrl-W in insert mode
-
VIM-1628 Fix dead keys for JBR11
-
VIM-1061 Fix
^Kfor digraphs -
VIM-437 Support
keymodeoption -
VIM-274 Enter select mode for refactoring
-
VIM-510 Support
Extend Selectionfor visual mode -
VIM-606 Fix select text with mouse in insert mode
-
VIM-800 Fix surround with live template
-
VIM-1013 Fix reformat code on selection
-
VIM-1214 Fix insert text to empty row
-
VIM-1452 Fix reselect visual block
-
VIM-1497 Fix rename variable action
-
VIM-1541 Fix visual block mode problems
-
VIM-1619 Extract method for visual mode
-
VIM-1616
Iwith multicaret works correctly -
VIM-1631 Fix visual block for tab character
-
VIM-1649 Type variable for surround live template
-
VIM-1654 Fix NPE while indent in visual block mode
-
VIM-1657 Fix vim repeat in visual block
-
VIM-1659 Fix selection on empty line
-
VIM-1473 Yanked lines are not handled as block selection when clipboard is used
-
VIM-714 Fixed problems with caret position by vertical movement
-
VIM-635 Supported
gncommands -
VIM-1535 Use same text attributes and highlight layer as IntelliJ's own Find command
-
VIM-1413 Fix
smartcaseoption being ignored in incremental search -
Fix incremental search not matching with trailing options, e.g.
/Foo/+1 -
Move the current line as well as scrolling during incremental search
-
VIM-128 Fix
:substitutenot respectingignorecaseandsmartcaseoptions -
Fix next/previous search commands not respecting
smartcaseoverride -
Search highlights are updated when
ignorecase,smartcaseandhlsearchoptions are updated, and when plugin is disabled -
Incremental search highlights all matches in file, not just first
-
Added incremental search highlights for
:substitutecommand -
Fix exception when trying to highlight last CR in file
-
Improve behavior of
<BS>in command line entry -
VIM-1626 Add
ideajoinoption -
VIM-959 Add
ideamarksoption -
VIM-608 Automatic upload files on explicit save
-
VIM-1548 Respect editor settings about tabs and spaces
-
VIM-1682 Fix backward search with OR
-
VIM-752 Enter finishes template in normal mode
-
VIM-1668 Fix smart step into
-
VIM-1697 Fix wrong search with tab characters
-
VIM-1700 Fix wrong search with tab characters
-
VIM-1698 Paste doesn't clear clipboard
-
VIM-1359 Fix behavior of i_CTRL-W action
0.51, 2019-02-12
- VIM-1558 Fixed scrolling for code with block inlays in Rider 2018.3
- VIM-1187 Improved performance of
set relativelinenumberon large files - VIM-620 Fixed handling
<C-O>and<Esc>in Insert and Replace modes - VIM-798 Allow arrow keys for window navigation commands
0.50, 2018-10-18
Moved "Vim Emulation" settings into "File | Settings | Vim Emulation". Support
for vim-multiple-cursors commands <A-n>, <A-x>, <A-p>, g<A-n> (put set multiple-cursors into your ~/.ideavimrc to enable it). Support for running
Vim commands for multiple cursors. Various bug fixes.
- VIM-634 Support for vim-multiple-cursors commands
<A-n>,<A-x>,<A-p>,g<A-n> - VIM-780 Support for running Vim commands for multiple cursors
- VIM-176 Fixed arrow key navigation in Run/Debug tool windows
- VIM-339 Fixed
<Esc>in diff windows - VIM-862 Allow
:actionto work in visual mode - VIM-1110 Put the caret in correct place after
Iin visual block mode - VIM-1329 Request focus reliably for Ex entry and output panels
- VIM-1368 Wait for focus reliably before running an
:action - VIM-1379 Fixed
Ifor short lines in visual block mode - VIM-1380 Fixed
cwwith count at the end of a word - VIM-1404 Fixed the ability to use
:e#when editor tabs are hidden - VIM-1431 Fixed pasting text into the empty document
- VIM-1427 Added the support for count to the
itandatmotions - VIM-1287 Fixed
i(actions inside string literals - VIM-1317 Don't run Undo/Redo inside write actions
- VIM-1366 Don't wrap a secondary event loop for
input()into a write action - VIM-1274 Correctly process escaping when
smartcaseis on
0.49, 2017-12-12
Enabled zero-latency typing for Vim emulation. Added support for iskeyword option. Various bug fixes.
- VIM-1254 Enable zero-latency typing for Vim emulation
- VIM-1367 Support
iskeywordoption - VIM-523 Fixed global mark remembering only the line number
0.48, 2017-01-15
A bugfix release.
Bug fixes:
- VIM-1205 Don't move key handling into separate event for raw handlers
- VIM-1216 Fixed
.resetting the last find movement while repeating change that also uses movement
Features:
- Support for zero-latency rendering
0.47, 2016-10-19
A bugfix release.
Bug fixes:
- VIM-1098 Don't start visual selection when mouse click was actually drag over single character
- VIM-1190 Fixed exception "Write access is allowed from write-safe contexts only"
0.46, 2016-07-07
Added incsearch option for incremental search. Added support for it and
at tag block selection. Added vim-surround commands ys, cs, ds,
S. Various bug fixes.
Features:
- VIM-769 Added
vim-surroundcommandsys,cs,ds,S - VIM-264 Added tag block selection
- VIM-271 Added
incsearchoption for showing search results while typing - VIM-217 Added support for
={motion}formatting command
Bug fixes:
- VIM-796 Fixed focus issues with
:actioncommand - VIM-581 Fixed use of special registers
0-9and-in delete commands - VIM-965 Fixed exception in
[min some file types - VIM-564 Fixed
g_move to go to the current line - VIM-964 Fixed marks behavior when the whole line got deleted
- VIM-259 Move caret to the line beginning after
== - VIM-246 Fixed
{count}==formatting - VIM-287 Fixed insert new line before and after folds
- VIM-139 Focus on current search and use modal confirmation for
:s///gc - VIM-843 Don't highlight search results after restart
- VIM-1126 Fixed warning about modifying shortcuts of global actions for 2016.2
0.44, 2015-11-02
A bugfix release.
- VIM-1040 Fixed typing keys in completion menus and typing with the plugin disabled
0.43, 2015-11-02
A bugfix release.
- VIM-1039 Fixed running the plugin with Java 6
0.42, 2015-11-01
This release is compatible with IntelliJ 15+ and other IDEs based on the IntelliJ platform branch 143+.
- VIM-970 Fixed move commands in read-only files
0.41, 2015-06-10
A bugfix release.
- VIM-957 Fixed plugin version 0.40 is not compatible with IDEs other than IntelliJ
0.40, 2015-06-09
Added support for mapleader. Support comments in % brace matching. Various
bug fixes.
Features:
- VIM-650 Added support for
mapleader - VIM-932 Support comments in
%brace matching
Bug fixes:
- VIM-586 Invoke Vim shortcuts handler later to restore the sequence of input events
- VIM-838
Jshouldn't add whitespace if there is a trailing space - VIM-855 Fixed regexp character class problem
- VIM-210 Fix focus issues with the Ex panel and splits
- VIM-575 Don't change cursor position of other splits in visual mode
- VIM-864 Fixed visual marks getting changed during visual substitute
- VIM-856 Fixed regex look-behind problem
- VIM-868 Allow count on
gtandgT - VIM-700 Remapping
0should still allow it to be entered in command count - VIM-781 Fixed expanding visual block selection past empty lines
- VIM-845 Fixed
candxfunctionality for visual block selections - VIM-930 Fixed editor focus issues after closing Ex entry box on Oracle Java 6
0.39, 2014-12-03
A bugfix release.
Bug fixes:
- VIM-848 Show line numbers if they are enabled in the settings and there is
no
set number - VIM-702 Fix infinite loop on
s/$/\r/g - EA-63022 Don't update line numbers in the caret movement event listener
0.38, 2014-12-01
Added support for number and relativenumber options, clipboard=unnamed
option. Added :action and :actionlist commands for executing arbitrary
IDE actions. Various bug fixes.
Features:
- VIM-476 Added support for
clipboard=unnamedoption - VIM-410 Added support for
relativenumberoption - VIM-483 Added support for
numberoption - VIM-652 Added
:actionand:actionlistcommands for executing arbitrary IDE actions
Bug fixes:
- VIM-818 Enable key repeat on Mac OS X every time it gets reset by the OS
- VIM-624 Deselect visual selection range on opening the Ex entry field
- VIM-511 Fixed editing offset after
<BS>for.command - VIM-792 Fixed line-wise and block-wise paste commands for
*and+registers - VIM-501 Fixed off-by-1 error in visual block-wise selection
- VIM-613 Fixed repeat after
d$ - VIM-705 Fixed repeated multiline indent
- VIM-567 Fixed
:!to allow running non-filter commands - VIM-536 Fixed
ccon the second-to-last line - VIM-515 Fixed
cWcommand detecting end-of-word incorrectly - VIM-794 Fixed NCDFE related to 'number' in IDEs other than IntelliJ
- VIM-771 Fix semicolon repeat for 'till char' motion
- VIM-723 Fix pasting to an empty line
0.37, 2014-10-15
A bugfix release.
Bug fixes:
- VIM-784 Fixed visual line selection where the start of the selection range was greater than its end
- VIM-407 Fixed
>>to work if a line contains only one character
0.36, 2014-10-14
Added support for common window splitting and navigation commands. Various bug fixes.
Features:
- VIM-171 Window
<C-W>commands: split, close, next/previous windows, left/right/up/down windows - VIM-265 Window
:splitand:vsplitcommands
Bug fixes:
- VIM-632 Restored visual block mode that was broken due to multiple carets support
- VIM-770 Close the current tab on
:quitinstead of all tabs with the current file - VIM-569 Fixed
<C-W>when the caret is at the end of a line
0.35, 2014-05-15
The ~/.vimrc initialization file is no longer read by default, use
~/.ideavimrc instead.
Features:
- VIM-690 Read initialization commands only from
~/.ideavimrc
Bug fixes:
- VIM-676 Handle control characters in
.ideavimrcas pressed, not typed keystrokes - VIM-679 Parse characters less than U+0020 as
<C-$CHAR> - VIM-683 Allow
<C-PageUp>/<C-PagDown>to be used outside of Vim emulation - VIM-646 Don't update the visual selection if a command moves the caret and exits the visual mode
- VIM-213 Use
'<and'>marks for saving and restoring the last visual selection
0.34, 2014-04-29
A bugfix release.
Bug fixes:
- VIM-674 Don't handle
<Tab>in Insert mode in Vim emulation - VIM-672 Ignore mappings that contain
<Plug>and<SID> - VIM-670 First character of a recursive mapping shouldn't be mapped again
- VIM-666 Support
<Bar>in Vim key notation - VIM-666 Ignore characters after
|in:mapcommands - VIM-667 Ignore potentially nested lines of .vimrc based on leading whitespace
0.33, 2014-04-28
Added support for :map key mapping commands. New keyboard shortcuts handler
that doesn't require a separate keymap for Vim emulation. Added support for
:source and :sort commands.
Features:
- VIM-288 Support for
:mapkey mapping commands - VIM-543 Allow granular enable/disable of Vim shortcut keys
- VIM-643 Support for
:sourcecommand - VIM-439 Support for
:sortcommand
Bug fixes:
- VIM-528 Search and replace with grouping no longer works
- VIM-281 Don't disable global reformat code action for Vim emulation
0.32, 2013-11-15
Fixed API compatibility with IntelliJ platform builds 132.1052+.
0.31, 2013-11-12
A bugfix release.
Bug fixes:
- VIM-582 Fixed line comment and reformat commands with no visual selection
0.30, 2013-11-11
Added support for a separate .ideavimrc config file. Fixed long-standing
issues with merged undo/redo commands and <Esc> during code completion.
Various bug fixes.
Features:
- VIM-425 Read config from .ideavimrc if available
Bug fixes:
- VIM-98 Invoke actions in separate commands for better undo/redo
- VIM-193 Launch Vim action handler for
<Esc>in completion windows - VIM-440 Fixed
:eopen file dialog - VIM-550
:putcreates a new line - VIM-551 Argument of
:putis optional - Fixed several reported exceptions
0.29, 2013-05-15
A bugfix release.
Bug fixes:
- VIM-482 Fixed repeat buffer limits
- VIM-91 Enable normal
<Enter>handling for one-line editors - VIM-121 Don't move cursor while scrolling
0.28, 2013-04-06
A bugfix release.
Bug fixes:
- VIM-478 Fixed reconfigure Vim keymap for user-defined base keymaps
- VIM-479 Don't try to activate insert mode for diff view
0.27, 2013-04-03
New Vim keymap generator creates better keymaps, especially for Mac OS X. Restart after reconfiguring the keymap is no longer required.
Features:
- VIM-92 Better Vim keymaps for Mac OS X
- VIM-286 Ask if the plugin should enable repeating keys in Mac OS X
Bug fixes:
- VIM-42 Fixed code completion for the
.command - VIM-421 Fixed
cwon the last character in line - VIM-419 Fixed resetting cursor position after 'gt' and 'gT'
- VIM-233 Fixed code completion for edits in visual block mode
- VIM-404 Fixed
Ocommand at the first line - VIM-472 Fixed right selection in visual mode to be one char more
- Fixed command window font size to match editor font size
0.26, 2012-12-26
Added support for paste in the command mode: from a register using <C-R>,
from the clipboard using <S-Insert> or <M-V>. Added support for the last
change position mark (the dot . mark). New shortcuts for Go to declaration
<C-]> and Navigate back <C-T>. Various bug fixes.
Features:
- VIM-262 Support for paste from register in command mode
- VIM-214 Key bindings for paste into command line
- VIM-43 Added support for the last change position mark
- VIM-177 Added
<C-]>and<C-T>to the keymap
Bug fixes:
- VIM-302 Fixed tab switching order for
gtandgT
0.25, 2012-12-19
A bugfix release.
- VIM-400 Fixed saving characters with key modifiers in plugin settings
- VIM-319 Fixed saving plugin settings when registers contain the null character
0.24, 2012-12-03
Added Vim string object selection motions (see help topics v_i", v_a").
Various bug fixes.
Features:
- VIM-132 String object selection motions
Bug fixes:
- VIM-393 Fixed restoring editor state after invalid arguments with pending operators
- VIM-244 Fixed
dlfor the last character in line - VIM-394 Fixed
dawfor first and last words with no space at the right/left in the current line - VIM-296 Fixed
ccat the last line - VIM-392 Fixed change action at the last char in word for non-word motions
- VIM-390 Fixed paste a single line at the last line
- VIM-325 External web help for Vim
- VIM-300 Fixed
cwat the last char of a word before next word without whitespace - VIM-200 Fixed
cwat the last character of a word - VIM-105 Fixed
wmotion for the last word in line - VIM-223 Fixed AE: BaseCodeCompletionAction.actionPerformed
- VIM-331 Fixed word bounds in
wmotion for extended latin letters - Fixed
wmotion to stop at empty line - VIM-312 Fixed range and caret position after
dwon the last single-word line,wcommand argument for the last word in file - Fixed
wmotion at the last word - VIM-85 Bug fix for gi behavior
- Always move cursor at the beginning of the deleted range
- VIM-275 Fixed edge cases for
i{motion - VIM-314 Made
i{motion characterwise, not linewise/characterwise in visual mode - VIM-326 Fixed IOOBE in delete inner block motion inside string literals
- VIM-157 Fixed regression in moving the cursor after
~
0.23.115, 2012-11-14
A bugfix release.
- VIM-318 Fixed executing editor commands for editors not bound to a project
- VIM-321 Fixed IOOBE in delete empty range
- VIM-112 Delete a single previous word with in insert mode, not all inserted words
0.23.111, 2012-11-12
A bugfix release.
- Register action for 'iW' selection
- Vim compatible regexp substitutions for '\n' and '\r'
- Index of supported commands covered with tests
- VIM-276 T and F motions are exclusive, not inclusive
- VIM-289 Fixed regexp substitute when the substitution contained newlines
- VIM-185 Fixed NPE in KeyHandler.handleKey()
- VIM-226 Added tests for the bug fixed together with VIM-146
- VIM-146 Fixed handling of '$' in search and substitute commands
- VIM-198 Fixed indexing bug in offset normalization
- VIM-311 Test for single command sub-mode of insert mode
- EA-33193 Fixed access to context data from different Swing events
- Fixed command handling when motion expected, but another type of argument found
0.23.93, 2012-03-21
A bugfix release. Vim.xml was fixed to use Command+C, Command+V on Mac OS. Unfortunately you need to update Vim.xml manually this time.
...
Previous Releases
... from 0.8.4 Bug Fixes
- The Escape key is passed up to IDEA if not used by VIM first. This fix solves minor issues such as not being able to clear highlighted text using the Ctrl-Shift-F7, for example.
- :quit command now works in all forms (e.g. :q, :qu, :qui, :quit).
- Performing a change command while in visual mode now properly terminates visual mode.
- Fixed internal error caused when trying to use visual mode with IDEA's "column mode".
0.8.3 from 0.8.2 Bug Fixes
- After a fresh install it is possible to get a NPE when loading the first project. Now fixed.
- Fixed :class and :find. These were also broken by the focus fix in 0.7.2.
- Fixed * and # commands on one letter words.
- Fixed * and # commands on last word of line with trailing punctuation.
- Fixed b and e commands when trying to move to first or last word of file and the first or last character of the file was punctuation.
- Fixed NullPointerException appearing in system log when viewing a .form file.
- Fixed extraneous characters getting added to a register during recording.
- Use file type's indent size instead of tab size for indenting text.
- Restore caret if plugin is disabled.
- Fixed ability to delete blank line at end of files.
0.8.2 from 0.8.1
- Fixed typo in plugin.xml for new 'since-build'
0.8.1 from 0.8.0 Bug Fixes
- Updated to show up in the plugin list for Pallada.
- Fixed NullPointerException when using the :qall, :q, or :wq commands.
- Fixed the :edit, :next, :previous, :argument, :first, and :last commands. These were broken by the focus fix in 0.7.2.
0.8.0 from 0.7.3 New Features
- Support for Pallada (IDEA 4.5)
- Support for the hlsearch option and the :nohlsearch command. Now when a search is done, all matching text is highlighted. The highlight attributes are based on the "General|Search result" color setting. (Not for 4.0.x)
- Support for aw, aW, iw, and iW while in visual mode or as arguments to the y, gu, gU, g~, c, d, and ! commands.
Bug Fixes
- e and E while on the last word of a file didn't work.
- b and B while on the first word of a file didn't work.
0.7.3 from 0.7.2
New Features
- Added support for digraphs. Currently you can use Ctrl-k {char1}{char2} to enter a special character. This works while in Insert/Replace mode, as an argument to the r, F, T, f, and t commands, or while entering an ex command. The :digraphs command has been added to display the currently supported digraphs. Certain special cases of the Ctrl-K {char1}{char2} sequence are not supported. This supports all two character digraphs as listed in RFC1345. This amounts to 1,338 digraphs! Ensure the file encoding can handle the characters you enter.
- Added support for the 'digraph' option. If set, digraphs may be entered using {char1} [BackSpace] {char2}. This works in Insert/Replace mode or while entering an ex command.
- Added support for Ctrl-v {digits}. This works while in Insert/Replace mode, as an argument to the r, F, T, f, and t commands, or while entering an ex command.
- A new Vim.xml keymap needs to be installed or Ctrl-K needs to be removed from all source control menus.
Bug Fixes
- Fixed backspace in ex entry. Deleting the first character was closing the ex entry window.
0.7.2 from 0.7.1
Bug Fixes
- Fixed c<motion and d exception if the motion was invalid.
- Fixed focus problem with : and / and ? commands.
- Fixed word motion on strings such as 1/2/3.
- Fixed which didn't always match doing independent commands.
- Fixed cw on strings such as 1/2/3.
- Fixed dw which could delete lines instead.
- The results of the :registers, :marks, and :set commands are now displayed properly. This "more" window hadn't been working for a while.
- Fixed cursor position when issuing the O command on the first line.
- The confirmation dialog used with the :s//c command now has a default button and mnemonics for all buttons.
- A space is now properly allowed between the range and the command in a : command such as :1,2 co 4
0.7.1 from 0.7.0
Bug Fixes
- Opening a non-text file resulted in some exceptions. This could happen when opening an image with the ImageViewer plugin.
- Better handling of trying to edit a VCS controlled read-only file.
- Properly handle multiple < or > in the :> and :< commands.
- Fixed an exception and assertions when reopening a project.
- Fixed cursor position problem when issuing a c command that changed text up to the end of line.
- Using the C command on an empty file caused an error.
- Changing the last word on the last line leaves cursor correctly.
0.7.0 from 0.6.5
New Features
- Highlighting lines of code by clicking and/or dragging in the line number area now leaves you in visual line mode.
- Undoing all changes in a file now correctly marks the file as unchanged if it hasn't been saved in the meantime.
- All the :write commands (:w :wn :wN :wq) save just the one file now. To save all files use the :wall command.
- Enhanced the :e command. Support for :e# and :e have been added. :e# selects the previous tab. :e will search the entire project and open the first matching file. Relative paths are supported too. :e with no argument will still bring up the File Open dialog.
- Added support for the gP and gp commands.
- Added support for the z+ and z^ commands.
- Added :class command to bring up "Go To Class" dialog. If followed by a classname, open the corresponding Java file. Not in VIM.
- Added :symbol command to bring up "Go To Symbol" dialog. Not in VIM.
- Editors use block cursor for command mode and a vertical bar for insert/replace mode.
- Better support for split view editing.
- Text selection is reflected in all editors of a file.
Bug Fixes
- Under certain conditions, highlighting text left you in multiple layers of visual mode. This is now fixed.
- The gv command resulted in too much text being selected in many cases.
- The gv command now properly restores the cursor position.
- Fixed exception caused by using the :undo and :redo commands.
- Re-enabled all the :write related commands. Hopefully the deadlock has been solved.
- Fixed error referencing unknown class FileCloseAction.
- Fixed several exceptions related to edit fields in dialog boxes.
- Fixed some exceptions related to the undo manager.
- Status was not always show proper mode.
- r now works as expected.
- Toggling between insert and replace mode wasn't working properly.
- The cursor wasn't always restored correctly after an undo.
- Yanking the last line and then putting it elsewhere sometimes resulted in the old and new line not having a newline between them.
- Repeating of o and O commands, including with count, works properly now.
- dw, dW, and d[w now act like d$ if deleting the last word of a line.
- cW now properly behaves like cE.
0.6.5 from 0.6.4
Support for Aurora build #1050 and higher.
0.6.4 from 0.6.3
Support for Aurora build #1035 and higher.
New Features
- Added support for {, }, '{, '},
{, and} commands (previous and next paragraph).
Bug Fixes
- Fixed cursor movement problem introduced in version 0.6.3.
- Fixed issues with visual ranges introduced in version 0.6.3.
- Fixed bug with cursor placement when clicking on a blank line.
- Triple clicking text now properly puts the user in Visual Line mode.
Clean-up
- Removed use of newly deprecated methods in Open API.
- Some basic code cleanup.
0.6.3 from 0.6.2
Support for Aurora build #992 and higher.
0.6.2 from 0.6.1
Repackaged to install as a zip directory instead of a jar file. This provides better support for the new plugins repository.
0.6.1 from 0.6.0
Support for Aurora build #963.
Changed Features
- Removed the VIM icon from the toolbar. This was only used to display status messages. Now display status messages in the IDEA status bar.
Bug Unfixes
- Removed, again, support for :w related ex commands
0.6.0 from 0.4.1
Support for Aurora build #939. It may work with slightly older versions too. This version will not work with IDEA 3.x. For IDEA 3.x you must use IdeaVim versions prior to 0.6.0.
Bug Fixes
- Put back file saving for the :w related ex commands
0.4.1 from 0.4.0
Bug Fixes
- Fixed vim.xml for Windows. This file was getting deleted by Idea on Windows due to a mismatch in the case of the name.
- The O command now properly indents the new line.
- Fixed Null Pointer Exception when editing file templates.
Temporary Work-arounds
- Disabled the saving of files when using any of the :w related commands until a fix can be found for the dead-lock bug. ZZ and ZQ still save files.
0.4.0 from 0.3.2
New Features
- A VIM tool window has been added. This is used to show the current mode (if
:set showmode is set) and any messages normally shown on the last line in
VIM. To make this useful you should do the following:
- Show the VIM tool window.
- Make the VIM tool window docked.
- Turn off auto-hide for the VIM tool window.
- Shrink the tool window so just the window title is visible.
- Do not move the VIM tool window to the left or right - leave on the bottom or top.
- Various error messages are now displayed in the new status bar.
- Added support for : register
- Added support for / register
New Commands
- Added support for q{register} command - macro recording.
- Added support for @{register} and @@ commands - playback register contents.
- Added support for :@{register}, :@@, and :@: - run register as command or repeat last :@ command.
New :set Options
- showmode is now supported.
Bug Fixes
- Hitting escape while entering a search string resulted in a search for the previous search string instead of doing nothing.
- The :registers command didn't display trailing newlines in a register
- Fixed focus problem if user hits escape in the find dialog after entering the :find command.
- All the search and substitute commands acted strangely if the text contained real tab characters. Tabs are now properly handled.
- gd and gD weren't working in read-only files.
0.3.2 from 0.3.1
New Commands
- Added support for {visual}!{filter}, !{motion}{filter}, and !!{filter}.
- Added support for [p, ]p, [P, ]P - put text but do not autoindent. Note - This plugin's support for putting text with or without proper indenting is reversed from VIM.
New Features
- Entering a count before the v or V command to start Visual mode is now supported.
- Repeating Visual commands is now supported.
Bug Fixes
- Now properly handle :0, :1, and : commands
- More problems with Visual mode - none of the visual change commands left you in insert mode after deleting the text and undo wouldn't put the text back.
- Fixed the handling of undo/redo with regard to text added to a file while not in insert mode. This can happen with the use of the Generate... menu for adding constructors, getters, etc. This also can happen when IDEA adds an import statement automatically. This also allows you to undo import optimizations!
- Doing a cw or cW when the cursor is already on the end of a word/WORD now correctly deletes only the last character of the word/WORD and not the next word too.
- gd and gD now properly save the jump location before moving to the declaration.
- z, z-, and z. now move the cursor to the start of the line.
- Visual mode is now exited after issuing the = or gq command.
- The commands c% and d% where not removing the closing match as expected.
- The d{motion} command now becomes linewise when the motion covers more than one line and there is just whitespace before the start and after the end.
- Renamed some source files to avoid problems on case insensitive platforms.
- Entering a count for the . (repeat) command sometimes results in an internal error.
- Repeating an R command resulted in the text being inserted instead of overwriting old text. This now works properly.
- Issuing a p command when on the last line of a file pasted the line before the last line instead of after the last line.
0.3.1 from 0.3.0
New Commands
- Added support for [w, ]w, [b, and ]b. These move the cursor forward to start of next camel word, forward to end of next camel word, backward to start of previous camel word, and backward to end of previous camel word respectively. These are NOT in VIM but are very useful when working with mixed case method and variable names. Like their normal w, e, b, and ge counterparts, these may be used as operators for the c and d commands.
- :qall, :quitall, :wqall, and :xall - closes all editors.
- :wall - same as :write - save all files.
- :xit and :exit - same :wq - save files and close current editor.
- :close and :hide - same as :quit - close current editor.
- :only - Close all editors except the current editor.
- :display - same as :registers - display register contents.
- :undo - same as u - undo last change.
- :redo - same as Ctrl-R - redo last undone change.
- :wnext - save files and move to next editor.
- :wNext and :wprevious - save files and move to previous editor.
Changed Commands
- ZZ, ZQ, :q and :wq will not exit IDEA anymore
Bug Fixes
- Visual mode became unusable without doing a Ctrl-\ Ctrl-n command after each visual mode command. This unstable mode also caused undo to work improperly resulting in garbled text.
- Ex commands that take a count instead of a range (:next, :Next, etc.) were getting the current line number as the count instead of one.
- The == command can now be repeated with the . command.
- Backslashes () in the replace text of a :substitute command was not being handled correctly in all cases.
0.3.0 from 0.2.0
Redone Commands
- / and ? and all their variants are now supported properly, including offsets.
- n and N are now supported properly
- Ex command ranges now fully support searches
- :substitute command now fully supports all Vim style search and replaces
New Commands
- Added support for :set. Only a small number of options are supported.
- Load .vimrc or _vimrc from user's home directory. Only set commands are honored.
- Added support for , #, g, and g# - search for word under cursor.
Supported Set Options
- gdefault - Indicates of the global flag in on by default for the :substitute command.
- ignorecase - The default case sensitivity for searchs and substitutes.
- matchpairs - Specify the character pairs used by the % command
- more - Indicates whether 'more' is used or not for display windows
- scroll - Specifies the number of lines scrolled by the Ctrl-D and Ctrl-U commands. Set to zero for half page.
- selection - Specifies how the cursor can be moved at the ends of lines in Visual mode. It also controls whether the Visual mode selection is inclusive or exclusive.
- smartcase - Overrides ignorecase if set and pattern has uppercase characters.
- undolevels - Set to 0 for Vi style undo (1 level). Set to other number to specify how many levels of undo are supported per editor.
- visualbell - controls whether the plugin beeps or not.
- wrapscan - Determines is searches wrap around the start or end of the file.
0.2.0 from 0.1.1
New Commands
- Added support for Ctrl-U while in insert mode
- Added support for 0 Ctrl-D to remove all indent in current line
- Added support for F1 while in insert - exit insert and bring up help topics
- Added support for F1 while in normal mode - bring up help topics
- Added support for :promptfind - Brings up Search Dialog
- Added support for :promptrepl - Brings up Search/Replace Dialog
- Added real support for :substitute - search and replace
- Added support for :& - search and replace
- Added support for :~ - search and replace
- Added support for @: - repeat last Ex command
- Added support for :{range}!{filter} [arg] command - filter text
- Added support for :{range}!! command - repeat filter
- Added support for :marks - display marks
- Added support for :registers - display registers
Bug Fixes
- Using the '%' range in Ex commands ignored the first line
- Selecting a register for a command after using Ctrl-O in insert mode sent the user back to insert mode before they could enter the command.
- Many commands caused exceptions if the current file is empty.
- Let mouse clicks move cursor to end-of-line while in Insert or Replace mode.
Keymappings - Install new plugin.xml or manually add keymapping
- F1
0.1.1 from 0.1.0
- Fixed text of README file (NAME and VERSION weren't properly substituted)
- Fixed issue with pressing Enter when entering an Ex command (no more beep or IDEA error message)
- Fixed issue with pressing Backspace in the Ex command entry window when there are no characters. The beep is gone and the command entry is properly exited.


