---
tag: vim
---
Operate on an Indented Block of Lines with vim-indent-object
============================================================
[vim-indent-object](https://github.com/michaeljsmith/vim-indent-object) is a great Vim plugin that adds an `i` text object for an indented block of text,
very useful in Python!
* vii selects all lines at the same indentation level as the current line.
For example just the body of a method and _not_ the method signature or any empty lines below the method.
Or just the body of a `try` clause and _not_ the `try` line itself.
* vai selects all lines at the same indentation level as the current line,
_and_ the first unindented line above the indented block (e.g. the method
signature, if the indented block is a method, or the `try` if the indented
block is a try clause, etc).
This also selects any blank lines below the indented block, if it's followed
directly by empty lines.
* vaI selects an indentation level and both the unindented line above _and_ the unindented line below it.
For a method this will select the method's signature (unindented line above) _and_ the signature of the next method
below (unindented line below) (as well as any empty lines between the two methods).
For a `try` clause it'll select both the `try` above and the first `except` below (but not the body of the `except` clause).
* In visual mode you can keep repeating one of the above mappings to keep extending the selection to more and more text at higher and higher indentation levels.
For example:
vii (goes into visual mode and selects the body of a try clause),
ii (widens the selection to the entire method),
ii (widens the selection again, to the entire class body),
ii (widens the selection to also include the `class` signature).
After this, further ii's start selecting lines and blocks above the class.
You can combine the `ai`, `ii` and `aI` text objects with other operators besides `v` for visual mode,
e.g. cii, dii, yii etc.
For example >ii or will indent or dedent an indented block.
If you have [vim-commentary](https://github.com/tpope/vim-commentary) installed then
gcii will comment out an indented block.