2008-09-18 12 views
13

Al definir o llamar funciones con argumentos suficientes para abarcar varias líneas, quiero que vim las alinee. Por ejemplo,alineando listas de parámetros de función con vim

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

La idea es que argsN-1 tenga su 'a' alineada con args1.

¿Alguien tiene alguna manera de que esto suceda automáticamente en vim? He visto el complemento de alineación para alinear signos iguales (en las declaraciones de asignación) y tal, pero no estoy seguro de si se puede hacer para resolver este problema.

Respuesta

7

creo que tiene que emitir el comando:

:set cino=(0 

Esto es cuando se usa cindent por supuesto.

edición: echaba de menos "set"

+0

Creo que significa: conjunto Cino = (0 – rampion

11

El comentario anterior lo tenía, pero se olvidó la set

:set cino=(0<Enter> 

De :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

Typo: s/cinfo/cino/ –

+3

La sangría no funcionaba en absoluto hasta que me di cuenta ¡No se suponía que se escribiera el ! El valor de la variable es simplemente: ** (0 ** –

+1

Sí, esto es quizás más confuso que la otra respuesta – Shitikanth

1

es posible que obtenga un buen rendimiento con el uso de una herramienta externa específica del idioma como filtro Vim. por ejemplo, si se puede escribir un archivo Perltidy config para generar el formato que desee (se ve como le gustaría que los -lp -vtc = 2 banderas), a continuación, puede tubería de su buffer de Vim existente a través de él con

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

si vas a estar corriendo este tipo de comando de frecuencia, se puede definir un comando poniendo algo como lo siguiente en su .vimrc:

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