mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2024-12-22 04:42:48 +01:00
488 lines
14 KiB
Markdown
488 lines
14 KiB
Markdown
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](https://github.com/junegunn/vim-plug) or [vundle](https://github.com/VundleVim/Vundle.vim).
|
|
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:
|
|
|
|
<details>
|
|
<summary><h2>easymotion</h2></summary>
|
|
|
|
Original plugin: [vim-easymotion](https://github.com/easymotion/vim-easymotion).
|
|
|
|
### Setup:
|
|
- Install [IdeaVim-EasyMotion](https://plugins.jetbrains.com/plugin/13360-ideavim-easymotion/)
|
|
and [AceJump](https://plugins.jetbrains.com/plugin/7086-acejump/) plugins.
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'easymotion/vim-easymotion'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'easymotion/vim-easymotion'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/easymotion/vim-easymotion'</code>
|
|
<br/>
|
|
<code>Plug 'vim-easymotion'</code>
|
|
<br/>
|
|
<code>set easymotion</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
All commands with the mappings are supported. See the [full list of supported commands](https://github.com/AlexPl292/IdeaVim-EasyMotion#supported-commands).
|
|
|
|
</details>
|
|
|
|
|
|
<details>
|
|
<summary><h2>sneak</h2></summary>
|
|
|
|
<img src="images/sneakIcon.svg" width="80" height="80" alt="icon"/>
|
|
|
|
By [Mikhail Levchenko](https://github.com/Mishkun)
|
|
Original repository with the plugin: https://github.com/Mishkun/ideavim-sneak
|
|
Original plugin: [vim-sneak](https://github.com/justinmk/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
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>NERDTree</h2></summary>
|
|
|
|
Original plugin: [NERDTree](https://github.com/preservim/nerdtree).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'preservim/nerdtree'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'preservim/nerdtree'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/preservim/nerdtree'</code>
|
|
<br/>
|
|
<code>Plug 'nerdtree'</code>
|
|
<br/>
|
|
<code>set NERDTree</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
[See here](NERDTree-support.md).
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>surround</h2></summary>
|
|
|
|
Original plugin: [vim-surround](https://github.com/tpope/vim-surround).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'tpope/vim-surround'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'tpope/vim-surround'</code>
|
|
<br/>
|
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=1697'</code>
|
|
<br/>
|
|
<code>Plug 'vim-surround'</code>
|
|
<br/>
|
|
<code>set surround</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
https://github.com/tpope/vim-surround/blob/master/doc/surround.txt
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>multiple-cursors</h2></summary>
|
|
|
|
Original plugin: [vim-multiple-cursors](https://github.com/terryma/vim-multiple-cursors).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'terryma/vim-multiple-cursors'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'terryma/vim-multiple-cursors'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/terryma/vim-multiple-cursors'</code>
|
|
<br/>
|
|
<code>Plug 'vim-multiple-cursors'</code>
|
|
<br/>
|
|
<code>set multiple-cursors</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
At the moment, the default key binds for this plugin do not get mapped correctly in IdeaVim (see [VIM-2178](https://youtrack.jetbrains.com/issue/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
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>commentary</h2></summary>
|
|
|
|
By [Daniel Leong](https://github.com/dhleong)
|
|
Original plugin: [commentary.vim](https://github.com/tpope/vim-commentary).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'tpope/vim-commentary'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'tpope/vim-commentary'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/tpope/vim-commentary'</code>
|
|
<br/>
|
|
<code>Plug 'vim-commentary'</code>
|
|
<br/>
|
|
<code>Plug 'tcomment_vim'</code>
|
|
<br/>
|
|
<code>set commentary</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
https://github.com/tpope/vim-commentary/blob/master/doc/commentary.txt
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>ReplaceWithRegister</h2></summary>
|
|
|
|
By [igrekster](https://github.com/igrekster)
|
|
Original plugin: [ReplaceWithRegister](https://github.com/vim-scripts/ReplaceWithRegister).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'vim-scripts/ReplaceWithRegister'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'vim-scripts/ReplaceWithRegister'</code>
|
|
<br/>
|
|
<code>Plug 'ReplaceWithRegister'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/inkarkat/vim-ReplaceWithRegister'</code>
|
|
<br/>
|
|
<code>Plug 'inkarkat/vim-ReplaceWithRegister'</code>
|
|
<br/>
|
|
<code>Plug 'vim-ReplaceWithRegister'</code>
|
|
<br/>
|
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=2703'</code>
|
|
<br/>
|
|
<code>set ReplaceWithRegister</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
https://github.com/vim-scripts/ReplaceWithRegister/blob/master/doc/ReplaceWithRegister.txt
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>argtextobj</h2></summary>
|
|
|
|
Original plugin: [argtextobj.vim](https://www.vim.org/scripts/script.php?script_id=2699).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'vim-scripts/argtextobj.vim'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'vim-scripts/argtextobj.vim'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/vim-scripts/argtextobj.vim'</code>
|
|
<br/>
|
|
<code>Plug 'argtextobj.vim'</code>
|
|
<br/>
|
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=2699'</code>
|
|
<br/>
|
|
<code>set argtextobj</code>
|
|
</details>
|
|
|
|
### 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
|
|
|
|
</details>
|
|
|
|
|
|
<details>
|
|
<summary><h2>exchange</h2></summary>
|
|
|
|
By [fan-tom](https://github.com/fan-tom)
|
|
Original plugin: [vim-exchange](https://github.com/tommcdo/vim-exchange).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'tommcdo/vim-exchange'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'tommcdo/vim-exchange'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/tommcdo/vim-exchange'</code>
|
|
<br/>
|
|
<code>Plug 'vim-exchange'</code>
|
|
<br/>
|
|
<code>set exchange</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
https://github.com/tommcdo/vim-exchange/blob/master/doc/exchange.txt
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>textobj-entire</h2></summary>
|
|
|
|
By [Alexandre Grison](https://github.com/agrison)
|
|
Original plugin: [vim-textobj-entire](https://github.com/kana/vim-textobj-entire).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'kana/vim-textobj-entire'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'kana/vim-textobj-entire'</code>
|
|
<br/>
|
|
<code>Plug 'vim-textobj-entire'</code>
|
|
<br/>
|
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=2610'</code>
|
|
<br/>
|
|
<code>set textobj-entire</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
https://github.com/kana/vim-textobj-entire/blob/master/doc/textobj-entire.txt
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>highlightedyank</h2></summary>
|
|
|
|
By [KostkaBrukowa](https://github.com/KostkaBrukowa)
|
|
Original plugin: [vim-highlightedyank](https://github.com/machakann/vim-highlightedyank).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'machakann/vim-highlightedyank'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'machakann/vim-highlightedyank'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/machakann/vim-highlightedyank'</code>
|
|
<br/>
|
|
<code>Plug 'vim-highlightedyank'</code>
|
|
<br/>
|
|
<code>set highlightedyank</code>
|
|
</details>
|
|
|
|
### 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
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>vim-paragraph-motion</h2></summary>
|
|
|
|
Original plugin: [vim-paragraph-motion](https://github.com/dbakker/vim-paragraph-motion).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'dbakker/vim-paragraph-motion'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'dbakker/vim-paragraph-motion'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/dbakker/vim-paragraph-motion'</code>
|
|
<br/>
|
|
<code>Plug 'vim-paragraph-motion'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/vim-scripts/Improved-paragraph-motion'</code>
|
|
<br/>
|
|
<code>Plug 'vim-scripts/Improved-paragraph-motion'</code>
|
|
<br/>
|
|
<code>Plug 'Improved-paragraph-motion'</code>
|
|
<br/>
|
|
<code>set vim-paragraph-motion</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
https://github.com/dbakker/vim-paragraph-motion#vim-paragraph-motion
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>vim-indent-object</h2></summary>
|
|
|
|
By [Shrikant Sharat Kandula](https://github.com/sharat87)
|
|
Original plugin: [vim-indent-object](https://github.com/michaeljsmith/vim-indent-object).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `Plug 'michaeljsmith/vim-indent-object'`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plugin 'michaeljsmith/vim-indent-object'</code>
|
|
<br/>
|
|
<code>Plug 'https://github.com/michaeljsmith/vim-indent-object'</code>
|
|
<br/>
|
|
<code>Plug 'vim-indent-object'</code>
|
|
<br/>
|
|
<code>set textobj-indent</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
https://github.com/michaeljsmith/vim-indent-object/blob/master/doc/indent-object.txt
|
|
|
|
</details>
|
|
|
|
|
|
<details>
|
|
<summary><h2>matchit.vim</h2></summary>
|
|
|
|
By [Martin Yzeiri](https://github.com/myzeiri)
|
|
Original plugin: [matchit.vim](https://github.com/chrisbra/matchit).
|
|
|
|
### Setup:
|
|
- Add the following command to `~/.ideavimrc`: `packadd matchit`
|
|
<details>
|
|
<summary>Alternative syntax</summary>
|
|
<code>Plug 'vim-matchit'</code>
|
|
<br/>
|
|
<code>Plug 'chrisbra/matchit'</code>
|
|
<br/>
|
|
<code>set matchit</code>
|
|
</details>
|
|
|
|
### Instructions
|
|
|
|
https://github.com/adelarsq/vim-matchit/blob/master/doc/matchit.txt
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>IdeaVim-Quickscope</h2></summary>
|
|
|
|
Original plugin: [quick-scope](https://github.com/unblevable/quick-scope).
|
|
|
|
### Setup:
|
|
- Install [IdeaVim-Quickscope](https://plugins.jetbrains.com/plugin/19417-ideavim-quickscope) plugin.
|
|
- Add the following command to `~/.ideavimrc`: `set quickscope`
|
|
|
|
### Instructions
|
|
|
|
https://plugins.jetbrains.com/plugin/19417-ideavim-quickscope
|
|
|
|
</details>
|
|
|
|
|
|
<details>
|
|
<summary><h2>Which-Key</h2></summary>
|
|
|
|
Original plugin: [vim-which-key](https://github.com/liuchengxu/vim-which-key).
|
|
|
|
### Setup:
|
|
- Install [Which-Key](https://plugins.jetbrains.com/plugin/15976-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
|
|
|
|
</details>
|
|
<details>
|
|
<summary><h2>Vim Peekaboo</h2></summary>
|
|
|
|
By Julien Phalip
|
|
Original plugin: [vim-peekaboo](https://github.com/junegunn/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
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>FunctionTextObj</h2></summary>
|
|
|
|
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
|
|
</details>
|
|
|
|
<details>
|
|
<summary><h2>Switch</h2></summary>
|
|
|
|
By Julien Phalip
|
|
Original plugin: [switch.vim](https://github.com/AndrewRadev/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
|
|
|
|
</details>
|