> i am using visual mode and <shift> >> to indent a block of code.
> the problem i am having is that once i do this, the visual mode is
> gone. So, i have to re-select everything and do it again. Is there a
> command to repeat the last shift ?
> or better yet, is there a better way to shift code right and left ? i
> develop in python, which is white-space sensitive, so this is a rather
> big deal for me to get right.


Well, you can perform the last normal-mode edit by using the
period.  This should re-shift another indent.

        :help .

If you use visual mode for your selection, you can also prefix a
count, so you can use

        3>

to shift 3 indent widths (this only works in visual mode, alas).

        :help v_>

If you need to dedent your text after indenting it, you can
reclaim your visual selection by using

        gv

in normal mode which will re-highlight your previous selection,
allowing you to hit ">" or "<" to shift the desired direction.

As for a "better" way, the only way(s) to improve on the above
would be to have a known context.

Thus, if you have a "paragraph" of python code (demarcated by
empty[*] lines above and below the block of code), you can use

        >ip

followed by "." to repeat the action multiple times (I frequently
use this for my python coding) or

        >}

to indent from the current line up to the next empty[*] line.

HTH,

-tim

[*] "empty" being defined by Vim's standards of matching "^$"
rather than "^\s*$" which is an occasional gotcha for me.




Reply via email to