USR_29
*usr_29.txt* For IdeaVIM version 0.12.0. Last change: 2006 Nov 12
IdeaVIM USER MANUAL - by Rick Maddy
Moving through programs
The creator of Vim is a computer programmer. It's no surprise that Vim
contains many features to aid in writing programs. Jump around to find where
identifiers are defined and used. Preview declarations in a separate window.
There is more in the next chapter.
|29.1| Using tags
|29.2| The preview window
|29.3| Moving through a program
|29.4| Finding global identifiers
|29.5| Finding local identifiers
Next chapter: |usr_30.txt| Editing programs
Previous chapter: |usr_28.txt| Folding
Table of contents: |usr_toc.txt|
*29.1* Using tags
This information does not apply to IdeaVIM.
*29.2* The preview window
This information does not apply to IdeaVIM.
*29.3* Moving through a program
Since a program is structured, Vim can recognize items in it. Specific
commands can be used to move around.
MOVING IN CODE BLOCKS
In C code blocks are enclosed in {}. These can get pretty long. To move to
the start of the outer block use the "[[" command. Use "]]" to find the end.
This assumes that the "{" and "}" are in the first column.
The "[{" command moves to the start of the current block. It skips over
pairs of {} at the same level. "]}" jumps to the end.
An overview:
function(int a)
+-> {
| if (a)
| +-> {
[[ | | for (;;) --+
| | +-> { |
| [{ | | foo(32); | --+
| | [{ | if (bar(a)) --+ | ]} |
+-- | +-- break; | ]} | |
| } <-+ | | ]]
+-- foobar(a) | |
} <-+ |
} <-+
When writing C++ or Java, the outer {} block is for the class. The next level
of {} is for a method. When somewhere inside a class use "[m" to find the
previous start of a method. "]m" finds the next end of a method.
Additionally, "[]" moves backward to the end of a function and "][" moves
forward to the end of a function. The end of a function is defined by a "}"
in the first column.
int func1(void)
{
return 1;
+----------> }
|
[] | int func2(void)
| +-> {
| [[ | if (flag)
start +-- +-- return flag;
| ][ | return 2;
| +-> }
]] |
| int func3(void)
+----------> {
return 3;
}
Don't forget you can also use "%" to move between matching (), {} and [].
That also works when they are many lines apart.
MOVING IN BRACES
The "[(" and "])" commands work similar to "[{" and "]}", except that they
work on () pairs instead of {} pairs.
[(
<--------------------------------
<-------
if (a == b && (c == d || (e > f)) && x > y)
-------------->
-------------------------------->
])
*29.4* Finding global identifiers
This information does not apply to IdeaVIM.
*29.5* Finding local identifiers
This information does not apply to IdeaVIM.
Next chapter: |usr_30.txt| Editing programs
Copyright: see |manual-copyright|