2011-06-20 15 views
6

I fusionado un archivo Python usando vimdiff, y el resultado tiene algo como esto:¿Puedo tener vim do multiline edit?

def code(): 
    line 1 
    line 2 
    line 3 
    line 4 
    ... 
    line n 

En este estado, la sangría es inconsistente. ¿Cómo podría eliminar todos los espacios delante de las líneas? Intenté en modo Visual, pero está seleccionando toda la línea. ¿Vim tiene una edición multilínea? Notepad ++ lo permite con Alt-Shift.

Respuesta

6

Ctrl-V para seleccionar bloques.

O, para eliminar todos los espacios en blanco al comienzo de todas las líneas en el archivo:

:%s/^\s\+ 
+2

Si utiliza Ctrl-V, entonces j para seleccionar la columna a la que desea alinear su código, presione '<' para desplazar el código que está detrás de la columna. – Benoit

+0

@Benoit: ¡Gran truco! A menudo aumento/disminuyo la sangría en el medio de las líneas: ¡hasta ahora estaba tirando/pegando espacios! –

6

Hay al menos dos soluciones a su problema:

  1. No es una forma de bloques seleccione el modo que ingrese usando Ctrlv. Puede seleccionar los espacios al comienzo de sus líneas y presionar d.

  2. Como alternativa, puede seleccionar linewise la línea que desea modificar mediante la introducción de modo visual con turnov (a continuación, utilizar la flecha hacia abajo o j para seleccionar). Y luego use < para eliminar un nivel de sangría. Use . para repetir la última operación si desea eliminar varias sangrías.

3

ShiftV le pondrá en el modo de línea visual, y luego puede presionar : para introducir un comando para ejecutar sólo en las líneas seleccionadas.

3

Con el modo VISUAL, solo tiene que seleccionar todas las líneas que desea volver a sangrar y pulsar =.

Nunca he usado Notepad ++, pero creo que lo que se llama edición multilínea se puede lograr con lo que Vim llama VISUAL BLOCK: en lugar de V, toca <C-v>. Entonces puede seleccionar porciones rectangulares de texto. Una vez que tenga su columna, presione I o A para ingresar al modo EDITAR luego <Esc> para aplicar su edición a todas las líneas. Como quiera eliminar un espacio único, debe seleccionar visualmente la columna de espacios y pulsar x o d.

También puede hacerlo con una simple búsqueda/reemplazo, supongo. O use :norm.