[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7183":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":38,"discoverSource":39},7183,"ideavim","JetBrains\u002Fideavim","JetBrains","IdeaVim – A Vim engine for JetBrains IDEs","https:\u002F\u002Flp.jetbrains.com\u002Fideavim\u002F",null,"Kotlin",10206,808,297,12,0,2,4,25,7,43.72,"MIT License",false,"master",true,[5,27,28,29,30,31,32,33,34],"intellij","intellij-platform","intellij-plugin","jb-official","jetbrains","jetbrains-ides","kotlin","vim","2026-06-12 02:01:35","\u003Cimg src=\"src\u002Fmain\u002Fresources\u002FMETA-INF\u002FpluginIcon.svg\" width=\"80\" height=\"80\" alt=\"icon\" align=\"left\"\u002F>\n\nIdeaVim\n===\n\n[![Official JetBrains Project][jb-official-svg]][jb-official]\n[![Contributions welcome][contributions-welcome-svg]][contributions-welcome]\n[![Downloads][plugin-downloads-svg]][plugin-repo]\n[![Rating][plugin-rating-svg]][plugin-repo]\n[![Version][plugin-version-svg]][plugin-repo]\n[![Gitter][gitter-svg]][gitter]\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJetBrains\u002Fideavim\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJetBrains\u002Fideavim)\n[![Twitter][twitter-svg]][twitter]\n\nIdeaVim is a Vim engine for JetBrains IDEs.\n\n##### Contact maintainers:\n* [Bug tracker](https:\u002F\u002Fyoutrack.jetbrains.com\u002Fissues\u002FVIM)\n* [@IdeaVim](https:\u002F\u002Ftwitter.com\u002Fideavim) on Twitter\n* [Chat on gitter](https:\u002F\u002Fgitter.im\u002FJetBrains\u002Fideavim)\n* [IdeaVim Channel](https:\u002F\u002Fjb.gg\u002Fbi6zp7) on [JetBrains Server](https:\u002F\u002Fdiscord.gg\u002Fjetbrains)\n\n##### Resources:\n\n* [Plugin homepage](https:\u002F\u002Flp.jetbrains.com\u002Fideavim\u002F)\n* [Plugin on Marketplace](https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F164-ideavim)\n* [Changelog](CHANGES.md)\n* [Continuous integration builds](https:\u002F\u002Fideavim.teamcity.com\u002F)\n\n#### Compatibility\n\nIntelliJ IDEA, PyCharm, GoLand, CLion, PhpStorm, WebStorm, RubyMine, DataGrip, DataSpell, Rider, Cursive,\nAndroid Studio, and other [JetBrains IDEs](https:\u002F\u002Fwww.jetbrains.com\u002Fides\u002F).\n\nSetup\n------------\n\n- IdeaVim can be installed via `Settings | Plugins`.\nSee the [detailed instructions](https:\u002F\u002Fwww.jetbrains.com\u002Fhelp\u002Fidea\u002Fmanaging-plugins.html#).\n\n- Use `Tools | Vim` in the menu to enable or disable vim.\n\n- Use the `~\u002F.ideavimrc` file as an analog of `~\u002F.vimrc` ([learn more](#Files)). The XDG standard is supported, as well.\n\n- Shortcut conflicts can be resolved by using:\n     - On Linux & Windows: `File | Settings | Editor | Vim` & `File | Settings | Keymap`,\n     - On macOS: `Preferences | Editor | Vim` & `Preferences | Keymap`,\n     - Regular Vim mappings in the  `~\u002F.ideavimrc` file.\n\nGet Early Access\n-------------------\n\nWould you like to try new features and fixes? Join the Early Access Program and\nreceive EAP builds as updates!  \n\n1. Click the  IdeaVim icon \u003Cimg src=\"src\u002Fmain\u002Fresources\u002FMETA-INF\u002FpluginIcon_noBorders.svg\" width=\"16\" height=\"16\" alt=\"icon\"\u002F>\nin the status bar  | `Early Access Program` | `Subscribe to EAP`\n\n\nOr subscribe to EAP updates manually:\n\n1. Open `Settings | Plugins`\n2. Click the gear icon :gear:, select `Manage Plugin Repositories`, and add the following url:\n```\nhttps:\u002F\u002Fplugins.jetbrains.com\u002Fplugins\u002Feap\u002Fideavim\n```\n\nSee [the changelog](CHANGES.md) for the list of unreleased features.\n\nIt is important to distinguish EAP builds from traditional pre-release software.\nPlease note that the quality of EAP versions may at times be way below even\nusual beta standards.\n\nYou can always leave your feedback with:\n* [@IdeaVim](https:\u002F\u002Ftwitter.com\u002Fideavim) in Twitter\n* [Bug tracker](https:\u002F\u002Fyoutrack.jetbrains.com\u002Fissues\u002FVIM)\n\n\nSummary of Supported Vim Features\n---------------------------------\n\nHere are some examples of supported vim features and commands:\n\n* Normal \u002F insert \u002F visual \u002F select \u002F etc. modes\n* Motion \u002F deletion \u002F change \u002F window \u002F etc. commands\n* Key mappings\n* Marks \u002F Macros \u002F Digraphs \u002F Registers\n* Some [set commands](https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fideavim\u002Fwiki\u002Fset-commands)\n* Full Vim regexps for search and search\u002Freplace\n* Vim web help\n* `~\u002F.ideavimrc` configuration file\n* Vim script, including some [builtin functions](vimscript-info\u002FFUNCTIONS_INFO.MD)\n* IdeaVim plugins\n\nSee also:\n\n* [Top feature requests and bugs](https:\u002F\u002Fyoutrack.jetbrains.com\u002Fissues\u002FVIM?q=%23Unresolved+sort+by%3A+votes)\n\nFiles\n-----\n\n* `~\u002F.ideavimrc`\n    * Your IdeaVim-specific Vim initialization commands\n    \n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Example\u003C\u002Fstrong> (click to see)\u003C\u002Fsummary>\n\n```vim\n\"\"\" Map leader to space ---------------------\nlet mapleader=\" \"\n\n\"\"\" Plugins  --------------------------------\nset surround\nset multiple-cursors\nset commentary\nset argtextobj\nset easymotion\nset textobj-entire\nset ReplaceWithRegister\n\n\"\"\" Plugin settings -------------------------\nlet g:argtextobj_pairs=\"[:],(:),\u003C:>\"\n\n\"\"\" Common settings -------------------------\nset showmode\nset so=5\nset incsearch\nset nu\n\n\"\"\" Idea specific settings ------------------\nset ideajoin\nset ideastatusicon=gray\nset idearefactormode=keep\n\n\"\"\" Mappings --------------------------------\nmap \u003Cleader>f \u003CPlug>(easymotion-s)\nmap \u003Cleader>e \u003CPlug>(easymotion-f)\n\nmap \u003Cleader>d \u003CAction>(Debug)\nmap \u003Cleader>r \u003CAction>(RenameElement)\nmap \u003Cleader>c \u003CAction>(Stop)\nmap \u003Cleader>z \u003CAction>(ToggleDistractionFreeMode)\n\nmap \u003Cleader>s \u003CAction>(SelectInProjectView)\nmap \u003Cleader>a \u003CAction>(Annotate)\nmap \u003Cleader>h \u003CAction>(Vcs.ShowTabbedFileHistory)\nmap \u003CS-Space> \u003CAction>(GotoNextError)\n\nmap \u003Cleader>b \u003CAction>(ToggleLineBreakpoint)\nmap \u003Cleader>o \u003CAction>(FileStructurePopup)\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Suggested options\u003C\u002Fstrong> (click to see)\u003C\u002Fsummary>\n\nHere is also a list of the suggested options from [defaults.vim](https:\u002F\u002Fgithub.com\u002Fvim\u002Fvim\u002Fblob\u002Fmaster\u002Fruntime\u002Fdefaults.vim)\n\n```vim\n\" Show a few lines of context around the cursor. Note that this makes the\n\" text scroll if you mouse-click near the start or end of the window.\nset scrolloff=5\n\n\" Do incremental searching.\nset incsearch\n\n\" Don't use Ex mode, use Q for formatting.\nmap Q gq\n```\n\u003C\u002Fdetails>\n\n\nYou can read your `~\u002F.vimrc` file from `~\u002F.ideavimrc` with this command:\n\n    source ~\u002F.vimrc\n\nAlso note that if you have overridden the `user.home` JVM option, this\nwill affect where IdeaVim looks for your `.ideavimrc` file. For example, if you\nhave `-Duser.home=\u002Fmy\u002Falternate\u002Fhome` then IdeaVim will source\n`\u002Fmy\u002Falternate\u002Fhome\u002F.ideavimrc` instead of `~\u002F.ideavimrc`.\n\nAlternatively, you can set up initialization commands using [XDG](https:\u002F\u002Fspecifications.freedesktop.org\u002Fbasedir-spec\u002Fbasedir-spec-latest.html) standard.\nPut your settings to `$XDG_CONFIG_HOME\u002Fideavim\u002Fideavimrc` file.\n\n\nIdeaVim Plugins\n--------------------\n\nSee [doc\u002FIdeaVim Plugins.md](https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fideavim\u002Fwiki\u002FIdeaVim-Plugins)\n\nExecuting IDE Actions\n---------------------\n\nIdeaVim adds various commands for listing and executing arbitrary IDE actions as\nEx commands or via `:map` command mappings:\n\n### Executing actions:\n* `\u003CAction>({action_id})`\n    * For the mappings you can use a special `\u003CAction>` keyword. Don't forget the parentheses.\n    * E.g. `map gh \u003CAction>(ShowErrorDescription)`  \u003C- execute hover on `gh`.\n    * :warning: Mappings to `\u003CAction>` don't work with `noremap`. \n      If you know the case when it's needed, please [let us know](https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fideavim#contact-maintainers).\n* `:action {action_id}`\n    * Execute an action by `{action_id}`. Works from Ex command line.\n    * Please don't use `:action` in mappings. Use `\u003CAction>` instead.\n\n### Finding action IDs:\n\n* IJ provides `IdeaVim: track action IDs` command to show the id of the executed actions.\n  This command can be found in \"Search everywhere\" (double `shift`).\n\n    \u003Cdetails>\n        \u003Csummary>\u003Cstrong>\"Track action IDs\" Details\u003C\u002Fstrong> (click to see)\u003C\u002Fsummary>\n        \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets\u002Freadme\u002Ftrack_action_dark.gif\">\n            \u003Cimg src=\"assets\u002Freadme\u002Ftrack_action_light.gif\" alt=\"track action ids\"\u002F>\n        \u003C\u002Fpicture>\n    \u003C\u002Fdetails>\n\n\n* `:actionlist [pattern]`\n    * Find IDE actions by id or keymap pattern (E.g. `:actionlist extract`, `:actionlist \u003CC-D`)\n\n##### Examples:\n\n```vim\n\" Map \\r to the Reformat Code action\n:map \\r \u003CAction>(ReformatCode)\n\n\" Map \u003Cleader>d to start debug\n:map \u003Cleader>d \u003CAction>(Debug)\n\n\" Map \\b to toggle the breakpoint on the current line\n:map \\b \u003CAction>(ToggleLineBreakpoint)\n```\n\n##### Some popular actions:\n\n```\nShowHoverInfo - Quick Documentation and Error Description\nQuickImplementations - Quick Definition\n```\n\nAutocmd\n----------\n\nIdeaVim supports Vim’s `:autocmd` for running commands on editor events, including\n`InsertEnter`\u002F`InsertLeave`, buffer events (`BufEnter`, `BufLeave`, `BufRead`,\n`BufNewFile`, `BufWritePre`, `BufWritePost`), window events (`WinEnter`, `WinLeave`),\nfocus events (`FocusGained`, `FocusLost`), and `FileType`. Full glob patterns\n(`*`, `**`, `?`, `[abc]`, `{a,b}`) and augroups are supported.\n\n```vim\nautocmd BufWritePre *.py echo \"saving python\"\nautocmd FileType python setlocal shiftwidth=4\n```\n\nSee [doc\u002Fautocmd.md](doc\u002Fautocmd.md) for the full event reference, firing order, and notes on IntelliJ-specific\ndifferences.\n\n\nVim Script\n------------\n\nIdeaVim can execute custom scripts that are written with Vim Script.\nAt the moment we support all language features, but not all of the built-in functions and options are supported.\n\nAdditionally, you may be interested in the\n[Vim Script Discussion](https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fideavim\u002Fdiscussions\u002F357).\n\n\n### IDE specific options\n\nYou can evaluate the `has('ide')` function call and get `1` if it was called with IdeaVim or `0` if the function was called from Vim\u002FNeoVim.  \nThe option `&ide` contains the name and edition of your IDE, for example, \"IntelliJ IDEA Ultimate Edition\".  \nTo see its value for the current IDE you are using, execute the `:echo &ide` command.  \nTo write an IDE-specific configuration, use Vim's regexp match operators `=~?` (case-insensitive) \u002F `=~#`  (case-sensitive)\n\n**Example config:**\n\n```vim\n\" options and mappings that are supported by both Vim and IdeaVim\nset nu\nset relativenumber\n\nif has('ide')\n  \" mappings and options that exist only in IdeaVim\n  map \u003Cleader>f \u003CAction>(GotoFile)\n  map \u003Cleader>g \u003CAction>(FindInPath)\n  map \u003Cleader>b \u003CAction>(Switcher)\n\n  if &ide =~? 'intellij idea'\n    if &ide =~? 'community'\n      \" some mappings and options for IntelliJ IDEA Community Edition\n    elseif &ide =~? 'ultimate'\n      \" some mappings and options for IntelliJ IDEA Ultimate Edition\n    endif\n  elseif &ide =~? 'pycharm'\n    \" PyCharm specific mappings and options\n  endif\nelse\n  \" some mappings for Vim\u002FNeovim\n  nnoremap \u003Cleader>f \u003Ccmd>Telescope find_files\u003Ccr>\nendif\n```\n\n:gem: Contributing\n------------\n\nThe power of contributing drives IdeaVim :muscle:. Even small contributions matter!\n\nSee the contribution guide in [CONTRIBUTING.md](CONTRIBUTING.md) to start bringing your value to the project.\n\n😎 In 2025, we launched a rewards program. See the guide for details.\n\nAuthors\n-------\n\nSee [AUTHORS.md](AUTHORS.md)\nfor a list of authors and contributors.\n\nIdeaVim tips and tricks\n-------\n\n- Use the power of IJ and Vim:\n    - `set ideajoin` to enable join via the IDE. See the [examples](https:\u002F\u002Fjb.gg\u002Ff9zji9).\n    - Make sure `ideaput` is enabled for `clipboard` to enable native IJ insertion in Vim.\n    - Sync IJ bookmarks and IdeaVim global marks: `set ideamarks` (works for marks with capital letters only)\n    - Check out more [ex commands](https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fideavim\u002Fwiki\u002Fset-commands).\n\n- Use your vim settings with IdeaVim. Put `source ~\u002F.vimrc` in `~\u002F.ideavimrc`.\n- Control the status bar icon via the [`ideastatusicon` option](https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fideavim\u002Fwiki\u002Fset-commands).\n- Not familiar with the default behaviour during a refactoring? See the [`idearefactormode` option](https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fideavim\u002Fwiki\u002Fset-commands).\n\nSome facts about Vim\n-------\n\nLet’s relax and have some fun now! Here are a few things we've found interesting during development\nand would like to share with you.\n\n- There are no such commands as `dd`, `yy`, or `cc`. For example, `dd` is not a separate command for deleting the line,\nbut a `d` command with a `d` motion.  \nWait, but there isn't a `d` motion in Vim! That’s right, and that’s why Vim has a dedicated set of commands\nfor which it checks whether the \n[command equals to motion](https:\u002F\u002Fgithub.com\u002Fvim\u002Fvim\u002Fblob\u002F759d81549c1340185f0d92524c563bb37697ea88\u002Fsrc\u002Fnormal.c#L6468)\nand if so, it executes `_` motion instead.  \n`_` is an interesting motion that isn't even documented in vi, and it refers to the current line.\nSo, commands like `dd`, `yy`, and similar ones are simply translated to `d_`, `y_`, etc.\n[Here](https:\u002F\u002Fgithub.com\u002Fvim\u002Fvim\u002Fblob\u002F759d81549c1340185f0d92524c563bb37697ea88\u002Fsrc\u002Fnormal.c#L6502)\nis the source of this knowledge.\n\n- `x`, `D`, and `&` are not separate commands either. They are synonyms of `dl`, `d$`, and `:s\\r`, respectively.\n[Here](https:\u002F\u002Fgithub.com\u002Fvim\u002Fvim\u002Fblob\u002F759d81549c1340185f0d92524c563bb37697ea88\u002Fsrc\u002Fnormal.c#L5365)\nis the full list of synonyms.\n\n- You can read a [post](https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fideavim\u002Fwiki\u002Fhow-many-modes-does-vim-have) about how modes work in Vim and IdeaVim.\n\n- Have you ever used `U` after `dd`? [Don't even try](https:\u002F\u002Fgithub.com\u002Fvim\u002Fvim\u002Fblob\u002F759d81549c1340185f0d92524c563bb37697ea88\u002Fsrc\u002Fops.c#L874).\n\n- A lot of variables that refer to visual mode start with two uppercase letters, e.g. `VIsual_active`. [Some examples](https:\u002F\u002Fgithub.com\u002Fvim\u002Fvim\u002Fblob\u002Fmaster\u002Fsrc\u002Fnormal.c#L17).\n  As mentioned [here](https:\u002F\u002Fvi.stackexchange.com\u002Fa\u002F42885\u002F12441), this was done this way to avoid the clash with X11.\n\n- Other [strange things](https:\u002F\u002Fgithub.com\u002Fvim\u002Fvim\u002Fblob\u002F759d81549c1340185f0d92524c563bb37697ea88\u002Fsrc\u002Fex_docmd.c#L1845) from vi:\n    * \":3\"       jumps to line 3\n    * \":3|...\"   prints line 3\n    * \":|\"       prints current line\n\n- Vim script doesn't skip white space before comma. `F(a ,b)` => E475.\n\n- Fancy constants for [undolevels](https:\u002F\u002Fvimhelp.org\u002Foptions.txt.html#%27undolevels%27):\n  > The local value is set to -123456 when the global value is to be used.\n\n- Vi (not Vim) is a POSIX standard, and [has a spec](https:\u002F\u002Fpubs.opengroup.org\u002Fonlinepubs\u002F9699919799\u002Futilities\u002Fvi.html)! Vim is mostly POSIX compliant when Vi compatibility is selected with the `'compatible'` option, but there are still some differences that can be changed with `'copoptions'`. The spec is interesting because it documents the behaviour of different commands in a stricter style than the user documentation, describing the current line and column after the command, for example. [More details can be found by reading `:help posix`](https:\u002F\u002Fvimhelp.org\u002Fvi_diff.txt.html#posix).\n\n- The Vim documentation contains many easter eggs. We encounter them occasionally, but GitHub user mikesmithgh has compiled a substantial collection [here](https:\u002F\u002Fgithub.com\u002Fmikesmithgh\u002Fvimpromptu).\n  - In addition to `:call err_teapot()`, which returns `E418: I'm a teapot`, there is also `:call err_teapot(1)`, which returns `E503: Coffee is currently not available`. Naturally, this is also supported in IdeaVim.\n\n- Insert mode has all `Ctrl` keys mapped, except `Ctrl-B`. In the documentation, it is marked as **\"CTRL-B in Insert\n  mode gone\"**. Call `:h i_CTRL-B-gone` in Vim to read why `Ctrl-B` was removed.\n\nLicense\n-------\n\nIdeaVim is licensed under the MIT license.\n\nThird-party components and licenses are listed in [ThirdPartyLicenses.md](ThirdPartyLicenses.md).\n\nAll releases before 2.0.0 were licensed under terms of GPL-2.0 or later.\nThe last commit before switch to MIT is 05852b07c6090ad40fde7d3cafe0b074604f7ac5.\nYou can read more about the license change here: https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fideavim\u002Fdiscussions\u002F543\n\n\n\u003C!-- Badges -->\n[jb-official]: https:\u002F\u002Fconfluence.jetbrains.com\u002Fdisplay\u002FALL\u002FJetBrains+on+GitHub\n[jb-official-svg]: https:\u002F\u002Fjb.gg\u002Fbadges\u002Fofficial.svg\n\n[plugin-repo]: https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F164-ideavim\n[plugin-downloads-svg]: http:\u002F\u002Fimg.shields.io\u002Fjetbrains\u002Fplugin\u002Fd\u002FIdeaVIM\n[plugin-rating-svg]: http:\u002F\u002Fimg.shields.io\u002Fjetbrains\u002Fplugin\u002Fr\u002Frating\u002FIdeaVIM\n[plugin-version-svg]: https:\u002F\u002Fimg.shields.io\u002Fjetbrains\u002Fplugin\u002Fv\u002Fideavim?label=version\n\n[gitter-svg]: https:\u002F\u002Fbadges.gitter.im\u002FJetBrains\u002Fideavim.svg\n[gitter]: https:\u002F\u002Fgitter.im\u002FJetBrains\u002Fideavim?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\n[twitter]: https:\u002F\u002Ftwitter.com\u002Fideavim\n[twitter-svg]: https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fideavim?label=twitter%20%40ideavim\n\n[contributions-welcome-svg]: http:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcontributions-welcome-brightgreen\n[contributions-welcome]: https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fideavim\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md\n","IdeaVim 是一个为 JetBrains 系列 IDE 设计的 Vim 引擎。它允许开发者在 IntelliJ IDEA、PyCharm、GoLand 等 JetBrains 产品中使用 Vim 的键盘绑定和命令，极大地提升了熟悉 Vim 操作用户的编码效率。项目采用 Kotlin 编写，具有高度可配置性，支持通过 `~\u002F.ideavimrc` 文件自定义映射，同时兼容 XDG 标准。对于那些希望在保持高效编辑体验的同时，继续享受 JetBrains IDE 强大功能的用户来说，IdeaVim 是一个理想的选择。此外，它还提供了早期访问计划，让感兴趣的用户可以尝试最新的功能改进。","2026-06-11 03:11:01","top_language"]