2011-01-07 7 views
35

He escrito un complemento en lo que respecta al análisis de una etiqueta XML. El contenido dentro de la etiqueta está sangrado y cuando copio la cadena analizada en el archivo se gettting como:Eliminar todos los espacios arbitrarios antes de una línea en Vim

Example line 
     This is part of the parsed line 
     Thats goes one 
    End of line 

Lo que quiero es eliminar todos los espacios frente a estas líneas, el texto final debe ser

Example line 
This is part of the parsed line 
Thats goes one 
End of line 

He intentado usar = pero no funciona como yo quiero. ¿Cómo puedo hacer eso con un mínimo de golpes de tecla?

+1

'=' hace lo que quiere para mí cuando el tipo de archivo no está definido, xml o html. – marcog

+2

Eso no funciona exactamente en plugin mdoe. No sé por qué. Por cierto, tengo la solución. Simplemente seleccione visualmente todas las líneas, y luego use ':% le', eso es perfecto –

+3

Si está usando% en':% le', entonces no necesita seleccionar visualmente todas las líneas primero. :) –

Respuesta

93

Para formatear una línea a la izquierda, uso :left. Utilice este formato de un archivo completo:

:%le 
+1

He buscado en Google durante meses con este molesto. Me cansé de ': 5 <<<<<<<<<<<<<<<<<<<' No puedo creer que me olvidé de ': left' Me siento tan tonto ahora. ¡Gracias! – Sukima

+2

para cualquiera que desee hacer esto en múltiples líneas, simplemente seleccione las líneas en modo visual (': V') y luego use': left' – Harry

+1

no más ":% s/^ \ s * // g"! –

10

Una simple búsqueda/reemplazo s/^\s*// debería hacer el truco, pero probablemente no sea la versión mínima.

3

¿Qué tal esto:

:%s/^ *// 

O ¿Está buscando una solución vim-guión?

+0

Eso eliminará todos los espacios. Creo que quieres decir ':% s/^ \ + //' ('\ +' será marginalmente más rápido que '*' ya que no reemplazará cero espacios sin nada). – DrAl

+0

En realidad, no, solo eliminará el primer grupo de espacios. Pero todavía está mal, por supuesto. Lo arreglaré. – chris

+1

Prefiero '\ s' que coincidirá con los caracteres de pestañas también. –

4

Simplemente escriba d seguido de w seguido de j al principio de cada línea.

+0

y si su archivo tiene 1,000 líneas de longitud? :) – marcog

+0

Luego necesita una solución diferente o un bucle. ;-) Pero para archivos pequeños puede ser más rápido escribir esas teclas 20 veces que una larga investigación. – Simon

+0

¡Gran solución si solo tiene que tratar algunas líneas y no quiere reformatear todo el archivo! –

7

Personalmente, seleccionaría visualmente las líneas con V, luego usar 99< para empujar el texto lo más a la izquierda posible.

0

La búsqueda/reemplazo sugerido por Lukáš Lalinský o el enfoque %le en la página de Wikia es probablemente la manera que lo haría, pero como otra alternativa que también se podría hacer:

:%< 99 

Como una forma rápida para desplazar el archivo completo (%) 99 veces hacia la izquierda.

0

Retire todos los espacios consecutivos: :%s/ */ /g

Fue útil para mí para ir de:

$screen-xs-min:    480px; 
$screen-sm-min:    768px; 
$screen-md-min:    992px; 
$screen-lg-min:     1200px; 

Para:

$screen-xs-min: 480px;  
$screen-sm-min: 768px;  
$screen-md-min: 992px;   
$screen-lg-min: 1200px;                         
+0

Aún más corto: ':% s/+// g –

1

Para eliminar los espacios iniciales y las pestañas en los números de línea especificados (por ejemplo, de las líneas 5 a 10),

:5,10s/^\s*// 
0

Sin embargo, otra manera de lograr esto es usar el comando normal de :h :normal-range

:%norm d^ 

Esto va a la columna 0 en cada línea (%) y eliminaciones (d) a la primera carácter no blanco (^).

Esto es un poco más que escribir como la respuesta aceptada, pero permite una fácil extensión si usted tiene un escenario más complejo en cuenta, tales como adicionales no-comentar o menos:

:%norm d^I# 

El resultado es:

#Example line 
#This is part of the parsed line 
#Thats goes one 
#End of line 
Cuestiones relacionadas