indent-motion is a Vim plugin which maps <Leader>[
and <Leader>]
in normal, visual, and operator-pending modes to move to the beginning and end (respectively) of your current indentation-delimited block (<Leader>
refers to your current user-defined "mapleader", which is \
by default).
For example (using JavaScript):
function foo(a, b, c) {
var x = 1;
var y = 2;
if (x == y) {
alert("This will never happen!");
++y;
}
}
In the above snippet, if the cursor is positioned on the var x = 1;
line, then <Leader>]
will move the cursor to the next-to-last line (closing brace of the conditional block) and <Leader>[
will move it back to the original location. If the cursor is positioned on the alert
call, then <Leader>]
will move down 1 line to ++y;
.
If one of the mappings is executed on an empty line (containing no characters, not even whitespace), then the assumed indentation will be that of the next non-empty line, where "next" is in the direction of the requested motion.
Currently, the mappings are not configurable, but this can easily be changed upon request.