Skip to content

IdeaVim Plugins

IdeaVim Bot edited this page Nov 26, 2024 · 16 revisions

IdeaVim Plugins

IdeaVim plugins work like the original Vim plugins. If you want to turn any of them on, you have to enable it via this command in your ~/.ideavimrc:

Plug '<plugin-github-reference>'

If you reuse your existing .vimrc file using source ~/.vimrc, IdeaVim can parse and enable plugins that are defined using vim-plug or vundle. No additional set commands in ~/.ideavimrc are required.
If you'd like to disable some plugin that's enabled in .vimrc, you can use set no<extension-name> in ~/.ideavimrc. E.g. set nosurround.

Available plugins:

easymotion

Original plugin: vim-easymotion.

Setup:

  • Install IdeaVim-EasyMotion and AceJump plugins.
  • Add the following command to ~/.ideavimrc: Plug 'easymotion/vim-easymotion'
    Alternative syntax Plugin 'easymotion/vim-easymotion'
    Plug 'https://github.com/easymotion/vim-easymotion'
    Plug 'vim-easymotion'
    set easymotion

Instructions

All commands with the mappings are supported. See the full list of supported commands.

sneak

icon

By Mikhail Levchenko
Original repository with the plugin: https://github.com/Mishkun/ideavim-sneak
Original plugin: vim-sneak.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'justinmk/vim-sneak'

Instructions

  • Type s and two chars to start sneaking in forward direction
  • Type S and two chars to start sneaking in backward direction
  • Type ; or , to proceed with sneaking just as if you were using f or t commands

NERDTree

Original plugin: NERDTree.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'preservim/nerdtree'
    Alternative syntax Plugin 'preservim/nerdtree'
    Plug 'https://github.com/preservim/nerdtree'
    Plug 'nerdtree'
    set NERDTree

Instructions

See here.

surround

Original plugin: vim-surround.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'tpope/vim-surround'
    Alternative syntax Plugin 'tpope/vim-surround'
    Plug 'https://www.vim.org/scripts/script.php?script_id=1697'
    Plug 'vim-surround'
    set surround

Instructions

https://github.com/tpope/vim-surround/blob/master/doc/surround.txt

multiple-cursors

Original plugin: vim-multiple-cursors.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'terryma/vim-multiple-cursors'
    Alternative syntax Plugin 'terryma/vim-multiple-cursors'
    Plug 'https://github.com/terryma/vim-multiple-cursors'
    Plug 'vim-multiple-cursors'
    set multiple-cursors

Instructions

At the moment, the default key binds for this plugin do not get mapped correctly in IdeaVim (see VIM-2178). To enable the default key binds, add the following to your .ideavimrc file...

" Remap multiple-cursors shortcuts to match terryma/vim-multiple-cursors
nmap <C-n> <Plug>NextWholeOccurrence
xmap <C-n> <Plug>NextWholeOccurrence
nmap g<C-n> <Plug>NextOccurrence
xmap g<C-n> <Plug>NextOccurrence
xmap <C-x> <Plug>SkipOccurrence
xmap <C-p> <Plug>RemoveOccurrence

" Note that the default <A-n> and g<A-n> shortcuts don't work on Mac due to dead keys.
" <A-n> is used to enter accented text e.g. ñ
" Feel free to pick your own mappings that are not affected. I like to use <leader>
nmap <leader><C-n> <Plug>AllWholeOccurrences
xmap <leader><C-n> <Plug>AllWholeOccurrences
nmap <leader>g<C-n> <Plug>AllOccurrences
xmap <leader>g<C-n> <Plug>AllOccurrences

commentary

By Daniel Leong
Original plugin: commentary.vim.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'tpope/vim-commentary'
    Alternative syntax Plugin 'tpope/vim-commentary'
    Plug 'https://github.com/tpope/vim-commentary'
    Plug 'vim-commentary'
    Plug 'tcomment_vim'
    set commentary

Instructions

https://github.com/tpope/vim-commentary/blob/master/doc/commentary.txt

ReplaceWithRegister

By igrekster
Original plugin: ReplaceWithRegister.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'vim-scripts/ReplaceWithRegister'
    Alternative syntax Plugin 'vim-scripts/ReplaceWithRegister'
    Plug 'ReplaceWithRegister'
    Plug 'https://github.com/inkarkat/vim-ReplaceWithRegister'
    Plug 'inkarkat/vim-ReplaceWithRegister'
    Plug 'vim-ReplaceWithRegister'
    Plug 'https://www.vim.org/scripts/script.php?script_id=2703'
    set ReplaceWithRegister

Instructions

https://github.com/vim-scripts/ReplaceWithRegister/blob/master/doc/ReplaceWithRegister.txt

argtextobj

Original plugin: argtextobj.vim.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'vim-scripts/argtextobj.vim'
    Alternative syntax Plugin 'vim-scripts/argtextobj.vim'
    Plug 'https://github.com/vim-scripts/argtextobj.vim'
    Plug 'argtextobj.vim'
    Plug 'https://www.vim.org/scripts/script.php?script_id=2699'
    set argtextobj

Instructions

By default, only the arguments inside parenthesis are considered. To extend the functionality to other types of brackets, set g:argtextobj_pairs variable to a comma-separated list of colon-separated pairs (same as VIM's matchpairs option), like let g:argtextobj_pairs="(:),{:},<:>". The order of pairs matters when handling symbols that can also be operators: func(x << 5, 20) >> 17. To handle this syntax parenthesis, must come before angle brackets in the list.

https://www.vim.org/scripts/script.php?script_id=2699

exchange

By fan-tom
Original plugin: vim-exchange.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'tommcdo/vim-exchange'
    Alternative syntax Plugin 'tommcdo/vim-exchange'
    Plug 'https://github.com/tommcdo/vim-exchange'
    Plug 'vim-exchange'
    set exchange

Instructions

https://github.com/tommcdo/vim-exchange/blob/master/doc/exchange.txt

textobj-entire

By Alexandre Grison
Original plugin: vim-textobj-entire.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'kana/vim-textobj-entire'
    Alternative syntax Plugin 'kana/vim-textobj-entire'
    Plug 'vim-textobj-entire'
    Plug 'https://www.vim.org/scripts/script.php?script_id=2610'
    set textobj-entire

Instructions

https://github.com/kana/vim-textobj-entire/blob/master/doc/textobj-entire.txt

highlightedyank

By KostkaBrukowa
Original plugin: vim-highlightedyank.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'machakann/vim-highlightedyank'
    Alternative syntax Plugin 'machakann/vim-highlightedyank'
    Plug 'https://github.com/machakann/vim-highlightedyank'
    Plug 'vim-highlightedyank'
    set highlightedyank

Instructions

If you want to optimize highlight duration, assign a time in milliseconds:
let g:highlightedyank_highlight_duration = "1000"
A negative number makes the highlight persistent.

If you want to change background color of highlight you can provide the rgba of the color you want e.g.
let g:highlightedyank_highlight_color = "rgba(160, 160, 160, 155)"

If you want to change text color of highlight you can provide the rgba of the color you want e.g.
let g:highlightedyank_highlight_foreground_color = "rgba(0, 0, 0, 255)"

https://github.com/machakann/vim-highlightedyank/blob/master/doc/highlightedyank.txt

vim-paragraph-motion

Original plugin: vim-paragraph-motion.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'dbakker/vim-paragraph-motion'
    Alternative syntax Plugin 'dbakker/vim-paragraph-motion'
    Plug 'https://github.com/dbakker/vim-paragraph-motion'
    Plug 'vim-paragraph-motion'
    Plug 'https://github.com/vim-scripts/Improved-paragraph-motion'
    Plug 'vim-scripts/Improved-paragraph-motion'
    Plug 'Improved-paragraph-motion'
    set vim-paragraph-motion

Instructions

https://github.com/dbakker/vim-paragraph-motion#vim-paragraph-motion

vim-indent-object

By Shrikant Sharat Kandula
Original plugin: vim-indent-object.

Setup:

  • Add the following command to ~/.ideavimrc: Plug 'michaeljsmith/vim-indent-object'
    Alternative syntax Plugin 'michaeljsmith/vim-indent-object'
    Plug 'https://github.com/michaeljsmith/vim-indent-object'
    Plug 'vim-indent-object'
    set textobj-indent

Instructions

https://github.com/michaeljsmith/vim-indent-object/blob/master/doc/indent-object.txt

matchit.vim

By Martin Yzeiri Original plugin: matchit.vim.

Setup:

  • Add the following command to ~/.ideavimrc: packadd matchit
    Alternative syntax Plug 'vim-matchit'
    Plug 'chrisbra/matchit'
    set matchit

Instructions

https://github.com/adelarsq/vim-matchit/blob/master/doc/matchit.txt

IdeaVim-Quickscope

Original plugin: quick-scope.

Setup:

  • Install IdeaVim-Quickscope plugin.
  • Add the following command to ~/.ideavimrc: set quickscope

Instructions

https://plugins.jetbrains.com/plugin/19417-ideavim-quickscope

Which-Key

Original plugin: vim-which-key.

Setup:

  • Install Which-Key plugin.
  • Add the following command to ~/.ideavimrc: set which-key

Instructions

https://github.com/TheBlob42/idea-which-key?tab=readme-ov-file#installation

Vim Peekaboo

By Julien Phalip
Original plugin: vim-peekaboo.

Setup

Add set peekaboo to your ~/.ideavimrc file, then run :source ~/.ideavimrc or restart the IDE.

Instructions

https://plugins.jetbrains.com/plugin/25776-vim-peekaboo

FunctionTextObj

By Julien Phalip

Setup

Add set functiontextobj to your ~/.ideavimrc file, then run :source ~/.ideavimrc or restart the IDE.

Instructions

https://plugins.jetbrains.com/plugin/25897-vim-functiontextobj

Switch

By Julien Phalip
Original plugin: switch.vim.

Setup

Add set switch to your ~/.ideavimrc file, then run :source ~/.ideavimrc or restart the IDE.

Instructions

https://plugins.jetbrains.com/plugin/25899-vim-switch