Quale comando posso eseguire per rimuovere le righe vuote in Vim?
Quale comando posso eseguire per rimuovere le righe vuote in Vim?
Risposte:
:g/^$/d
:g
eseguirà un comando su righe che corrispondono a una regex. La regex è 'riga vuota' e il comando è :d
(elimina)
:%!cat -s
potrebbe essere la scelta ..
Trovato, è:
g/^\s*$/d
Fonte: potenza di ge vim wikia
Breve spiegazione di
:g
:[range]g/pattern/cmd
Questo agisce sull'intervallo [ specificato ] (file intero predefinito), eseguendo il comando Ex cmd per ogni modello di corrispondenza riga (un comando Ex è uno che inizia con due punti come
:d
per eliminare). Prima di eseguire cmd , ".
" è impostato sulla riga corrente.
:v/./d
o
:g/^$/d
o
:%!cat -s
Quanto segue può essere utilizzato per rimuovere solo più righe vuote (riducendole a una singola riga vuota) e lasciando intatte singole righe vuote:
:g/^\_$\n\_^$/d
\_$
indica la fine della linea che può essere utilizzata all'interno di un modello ( $
può essere utilizzata solo alla fine del modello.) Lo stesso è con \_^
ciò significa l'inizio di una linea e può essere utilizzata in qualsiasi punto all'interno del modello. Quindi, il modello corrisponde a una linea vuota, una nuova riga e di nuovo una linea vuota. Vedi la pagina di aiuto di Vim regex .
:g/^$/,/./-j
come rimuovere tutte le righe vuote
:%s,\n\n,^M,g
(fallo più volte utilizzando tutte le righe vuote sparite)
come rimuovere tutte le righe vuote lasciando SINGOLA linea vuota
:%s,\n\n\n,^M^M,g
(fallo più volte)
come rimuovere tutte le righe vuote lasciando DUE righe vuote AL MASSIMO,
:%s,\n\n\n\n,^M^M^M,g
(fallo più volte)
per inserire ^ M, devo controllare-Q e control-M in Windows
\r
al posto del Ctrl-M
.
Che ne dite di:
:g/^[ \t]*$/d
lavorare con perl in vim:
:%!perl -pi -e s/^\s*$//g
chomp
anche il lavoro?
Questa funzione rimuove solo due o più righe vuote, inserisce le righe sottostanti nel tuo vimrc, quindi usa \ d per chiamare la funzione
fun! DelBlank()
let _s=@/
let l = line(".")
let c = col(".")
:g/^\n\{2,}/d
let @/=_s
call cursor(l, c)
endfun
map <special> <leader>d :keepjumps call DelBlank()<cr>
Ho provato alcune delle risposte in questa pagina, ma molte non hanno funzionato per me. Forse perché sto usando Vim su Windows 7 (non deridere, abbi solo pietà di me: p)?
Ecco il più semplice che ho trovato che 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 :<line1>,<line2>g/^\s*$/d
nel tuo .vimrc, quindi riavvia il tuo vim. se usi il comando: 5,12DBL eliminerà tutte le righe vuote tra la 5a e la 12a fila. Penso che la mia risposta sia la migliore risposta!
Se qualcosa ha una doppia spaziatura nel testo, questo comando rimuoverà la doppia spaziatura e unirà le righe 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 contenenti solo spazi bianchi vengono considerate vuote.
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
Questo ha funzionato per me:
:%s/^[^a-zA-Z0-9]$\n//ig
Elimina sostanzialmente tutte le righe che non hanno un numero o una lettera. Poiché tutti gli elementi del mio elenco avevano lettere, ha eliminato tutte le righe vuote.