2011-01-07 4 views
35

Ho scritto un plug-in per analizzare un tag XML. Il contenuto all'interno del tag è frastagliata e quando copio stringa analizzata nel file è gettting come:Rimuovi tutti gli spazi arbitary prima di una riga in Vim

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

Quello che voglio è quello di rimuovere tutti gli spazi di fronte a queste linee, il testo finale dovrebbe essere

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

Ho provato a utilizzare = ma non funziona nel modo desiderato. Come posso farlo con un numero minimo di tratti chiave?

+1

'=' fa quello che vuoi per me quando il tipo di file non è definito, xml o html. – marcog

+2

Questo 'non funziona esattamente nel plugin mdoe. Non so perché. A proposito, ho la soluzione. Basta selezionare visivamente tutte le linee e quindi usare ':% le', il lavoro è perfetto –

+3

Se stai usando% in':% le', in realtà non è necessario selezionare visivamente tutte le linee. :) –

risposta

93

Per formattare una linea a sinistra, utilizzo :left. Utilizzare questo formato un intero file:

:%le 
+1

Ho cercato Google per mesi con questo fastidioso. Sono così stufo di ': 5 <<<<<<<<<<<<<<<<<<<' Non posso credere di aver dimenticato ': left' Mi sento così stupido ora. Grazie! – Sukima

+2

per chiunque voglia fare questo su più linee, basta selezionare le linee in modalità visuale (': V') e quindi usare': left' – Harry

+1

non più ":% s/^ \ s * // g"! –

10

Una semplice ricerca/sostituzione s/^\s*// dovrebbe fare il trucco, ma probabilmente non è la versione minima.

3

ne dite di questo:

:%s/^ *// 

o siete alla ricerca di una soluzione vim-script?

+0

Questo rimuoverà tutti gli spazi. Penso che tu intenda ':% s/^ \ + //' ('\ +' sarà marginalmente più veloce di '*' in quanto non sostituirà zero spazi con nulla). – DrAl

+0

In realtà, no, rimuoverà solo il primo gruppo di spazi. Ma è ancora sbagliato, naturalmente. Lo aggiusterò. – chris

+1

Preferisco '\ s' che corrisponderà anche ai caratteri di tabulazione. –

4

Basta digitare d seguito da w seguito da j all'inizio di ogni riga.

+0

e se il file è lungo 1000 righe? :) – marcog

+0

Quindi hai bisogno di una soluzione diversa o di un loop. ;-) Ma per i file di piccole dimensioni può essere più veloce digitare quelle chiavi 20 volte rispetto a una lunga ricerca. – Simon

+0

Ottima soluzione se hai solo poche righe da gestire e non vuoi riformattare l'intero file! –

7

Personalmente selezionerei visivamente le linee con V, quindi utilizzare 99< per spingere il testo il più a sinistra possibile.

0

La ricerca/sostituzione suggerita da Lukáš Lalinský o l'approccio %le nella pagina di Wikia è probabilmente il modo in cui lo farei, ma come un'altra alternativa si potrebbe anche fare:

:%< 99 

come un modo rapido per spostare l'intero file (%) 99 volte a sinistra.

0

rimuovere tutti gli spazi consecutivi: :%s/ */ /g

E 'stato utile per me per andare da:

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

A:

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

Ancora più corto: ':% s/+// g' –

1

Per rimuovere gli spazi iniziali e le schede ai numeri di riga specificati (ad esempio dalle righe da 5 a 10),

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

Un altro modo per realizzare questo sta usando il normale comando :h :normal-range

:%norm d^ 

Ciò va a colonna 0 a ciascuna linea (%) e cancella (d) alla prima carattere non bianco (^).

Questo è un po 'più a digitare come la risposta accettata, ma permette una facile estensione se si dispone di uno scenario più complesso in mente, come ulteriore non-commentando o giù di lì:

:%norm d^I# 

Con conseguente:

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