Выстраивание списков параметров функции с помощью vim

При определении или вызове функций с достаточным количеством аргументов для охвата нескольких строк я хочу, чтобы vim выстраивал их. Например,

def myfunction(arg1, arg2, arg, ...
               argsN-1, argN)

Идея состоит в том, что argsN-1 должен иметь свой 'a', выровненный с args1.

Есть ли у кого-нибудь возможность автоматически выполнить это в vim? Я видел выравнивающий плагин для выравнивания равных знаков (в операторах присваивания) и т.д., Но я не уверен, можно ли решить эту проблему?

Ответы

Ответ 1

Предыдущий плакат имел это, но забыл set

:set cino=(0<Enter>

От :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))
                 {                         {

Ответ 2

Я считаю, что вы должны выполнить команду:

:set cino=(0

Это, конечно, при использовании cindent.

edit: Я пропустил "set"

Ответ 4

вы можете получить хороший пробег от использования внешнего инструмента, специфичного для языка, в качестве фильтра Vim. например, если вы можете написать конфигурационный файл Perltidy, чтобы сгенерировать нужное форматирование (похоже, вы хотели бы, чтобы -lp -vtc = 2), вы можете передать через него существующий буфер Vim с помощью

:!/path/to/tidy -config /path/to/configfile

если вы часто будете запускать эту команду, вы можете определить команду, поместив что-то вроде следующего в вашем .vimrc:

command -range=% Tidy <line1>,<line2>!/path/to/tidy -config /path/to/configfile