Regarding the use of [[and]], note the following from the motion.txt file in vim docs:
If your '{' or '}' are not in the first column, and you would like to use "[["
and "]]" anyway, try these mappings:
: map [[? {w99 [{
: map] [/} b99]}
:map ]] j0[[%/{
:map [] k$][%?}