When defining or calling functions with enough arguments to span multiple lines, I want vim to line them up. For example,
def myfunction(arg1, arg2, arg, ...
you might get some good mileage out of using a language-specific external tool as a Vim filter. for example, if you can write a Perltidy config file to generate the formatting you want (it looks like you would want the -lp -vtc=2 flags), you can then pipe your existing Vim buffer through it with
:!/path/to/tidy -config /path/to/configfile
if you're going to be running this sort of command frequently, you can define an command by putting something like the following in your .vimrc:
command -range=% Tidy ,!/path/to/tidy -config /path/to/configfile