Vim cancella le righe vuote

Quale comando posso eseguire per rimuovere le righe vuote in Vim?

:g/^$/d 

:g eseguirà un comando su linee che corrispondono a un’espressione regolare. L’espressione regolare è ‘riga vuota’ e il comando è :d (cancella)

Trovato, è:

 g/^\s*$/d 

Fonte: Potenza di g a vim wikia

 :v/./d 

o

 :g/^$/d 

o

 :%!cat -s 

È ansible utilizzare quanto segue per rimuovere solo più righe vuote (ridurle a una singola riga vuota) e lasciare intatte le singole righe vuote:

 :g/^\_$\n\_^$/d 
  1. come rimuovere tutte le righe degli spazi vuoti

     :%s,\n\n,^M,g 

    (fai questo più volte usa tutte le linee vuote sparite)

  2. come rimuovere tutte le righe vuote lasciando SINGLE linee vuote

     :%s,\n\n\n,^M^M,g 

    (fai questo più volte)

  3. come rimuovere tutte le righe vuote lasciando DUE linee vuote AL MASSIMO,

     :%s,\n\n\n\n,^M^M^M,g 

    (fai questo più volte)

per inserire ^ M, devo controllare-Q e control-M in windows

Che ne dite di:

 :g/^[ \t]*$/d 

lavora con perl in vim:

:%!perl -pi -es/^\s*$//g

Questo funziona per me

:%s/^\s*$\n//gc

Questa funzione rimuove solo due o più righe vuote, inserisce le righe sottostanti in vimrc, quindi usa la funzione \ d per chiamare

 fun! DelBlank() let [email protected]/ let l = line(".") let c = col(".") :g/^\n\{2,}/d let @/=_s call cursor(l, c) endfun map  d :keepjumps call DelBlank() 

Ho provato alcune delle risposte in questa pagina, ma molte di esse non hanno funzionato per me. Forse perché sto usando Vim su Windows 7 (non prendere in giro, abbi pietà di me: p)?

Ecco la più semplice che ho trovato funziona su Vim in Windows 7:

 :v/\S/d 

Ecco una risposta più lunga su Vim Wikia: http://vim.wikia.com/wiki/Remove_unwanted_empty_lines

 :g/^\s*$/d ^ begin of a line \s* at least 0 spaces and as many as possible (greedy) $ end of a line 

incolla

 :command -range=% DBL :,g/^\s*$/d 

nel tuo .vimrc, quindi riavvia il tuo vim. se usi il comando: 5,12DBL cancellerà tutte le righe vuote tra la 5a riga e la 12a riga. Penso che la mia risposta sia la migliore risposta!

Se qualcosa ha un doppio spazio sul testo, questo comando rimuoverà la doppia spaziatura e unirà le linee vuote ripetute preesistenti in un’unica riga vuota. Usa un delimitatore temporaneo di ^^^ all’inizio di una riga, quindi se questo si scontra con il tuo contenuto scegli qualcos’altro. Le righe che contengono solo spazi bianchi sono considerate vuote.

 %s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.* 

Questo ha funzionato per me:

 :%s/^[^a-zA-Z0-9]$\n//ig 

In pratica elimina tutte le righe che non hanno un numero o una lettera. Dal momento che tutti gli elementi nella mia lista avevano lettere, ha cancellato tutte le righe vuote.

Premere il tasto Canc nella modalità di inserimento per rimuovere le righe vuote.