lining up function parameter lists with vim

前端 未结 4 1626
迷失自我
迷失自我 2021-01-04 07:30

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, ...         


        
相关标签:
4条回答
  • 2021-01-04 07:42

    I believe you have to issue the command:

    :set cino=(0
    

    This is when using cindent of course.

    edit: I missed "set"

    0 讨论(0)
  • 2021-01-04 07:53

    Try the Align http://www.vim.org/scripts/script.php?script_id=294 and AutoAlign http://www.vim.org/scripts/script.php?script_id=884 scripts.

    0 讨论(0)
  • 2021-01-04 07:57

    The previous poster had it, but forgot the set

    :set cino=(0<Enter>
    

    From :help cinoptions-values

    The 'cinoptions' option sets how Vim performs indentation.  In the list below,
    "N" represents a number of your choice (the number can be negative).  When
    there is an 's' after the number, Vim multiplies the number by 'shiftwidth':
    "1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc.  You can use a
    decimal point, too: "-0.5s" is minus half a 'shiftwidth'.  The examples below
    assume a 'shiftwidth' of 4.
    
    ...
    
        (N    When in unclosed parentheses, indent N characters from the line
              with the unclosed parentheses.  Add a 'shiftwidth' for every
              unclosed parentheses.  When N is 0 or the unclosed parentheses
              is the first non-white character in its line, line up with the
              next non-white character after the unclosed parentheses.
              (default 'shiftwidth' * 2).
    
                cino=                     cino=(0 >
                  if (c1 && (c2 ||          if (c1 && (c2 ||
                              c3))                     c3))
                      foo;                      foo;
                  if (c1 &&                 if (c1 &&
                          (c2 || c3))           (c2 || c3))
                     {                         {
    
    0 讨论(0)
  • 2021-01-04 08:06

    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 <line1>,<line2>!/path/to/tidy -config /path/to/configfile
    
    0 讨论(0)
提交回复
热议问题