2011-09-15 15 views
6

Por ejemplo, en lugar de seguir la alineación:Cómo alinear a la izquierda los operadores de flujo IO << and >> en Vim?

std::cout << "Hello " << "Hello " 
    << "world "; 

Quiero izquierda a alinear el << operador, como:

std::cout << "Hello " << " Hello " 
      << "world "; 

Por defecto, Vim elige la primera. Parece que solo aumenta la sangría en un nivel para la nueva línea.

Entonces, ¿hay alguna manera de que pueda obtener la segunda alineación por defecto?

P.S. Ya he probado el plugin Align, pero se alinea a la región en una mesa, como:

std::cout << "Hello World" << "Hello " 
      << "World"  << "World Hello". 

que considero demasiado escasa.

Respuesta

4

estoy usando Tabular y esto funciona para mí

:Tabularize /^[^<<]\S* 


Salida:

std::cout << "Hello World" << "Hello " 
      << "world " << "World Hello"; 

Explicación

^ Comenzando seguido por << hasta el primero de <<, entonces la partida comenzará exactamente en el primer <<.

+0

esta es la forma más sencilla de imho y puede configurar reglas similares fácilmente en todos sus otros idiomas, así – dubvfan87

+0

No funciona bien para mí. Yo usaría ': Tab/\% (<<. * \) \ @

+0

@ib agree, thnx. Actualicé mi respuesta para deshacerme del espacio adicional en mi expresión regular también. –

1

Con el complemento Align, el comando para alinear las líneas de texto seleccionadas de la manera que desee es :<,>Align! l: <<. El primer argumento es un Comando AlignCtrl que le dice que alinee a la izquierda el primer campo y trate el resto de la línea como un solo campo. El segundo argumento es el separador. El manual Align explica todos los argumentos disponibles y las asignaciones predefinidas.

Cuestiones relacionadas