¿Qué comando puedo ejecutar para eliminar líneas en blanco en Vim?
¿Qué comando puedo ejecutar para eliminar líneas en blanco en Vim?
Respuestas:
:g/^$/d
:g
ejecutará un comando en líneas que coinciden con una expresión regular. La expresión regular es 'línea en blanco' y el comando es :d
(eliminar)
:%!cat -s
puede ser la opción ..
Lo encontré, es:
g/^\s*$/d
Fuente: Poder de g en vim wikia
Breve explicación de
:g
:[range]g/pattern/cmd
Esto actúa en el [rango] especificado (archivo completo predeterminado), al ejecutar el comando Ex cmd para cada patrón de coincidencia de línea (un comando Ex es uno que comienza con dos puntos, como
:d
para eliminar). Antes de ejecutar cmd , ".
" se establece en la línea actual.
:v/./d
o
:g/^$/d
o
:%!cat -s
Lo siguiente se puede utilizar para eliminar solo líneas en blanco múltiples (reducirlas a una sola línea en blanco) y dejar intactas líneas en blanco:
:g/^\_$\n\_^$/d
\_$
significa el final de línea que se puede usar dentro de un patrón ( $
solo se puede usar al final del patrón). Lo mismo ocurre con \_^
eso significa el inicio de una línea y se puede usar en cualquier lugar dentro del patrón. Entonces, el patrón coincide con una línea vacía, una nueva línea y nuevamente una línea vacía. Consulte la página de ayuda de Vim regex .
:g/^$/,/./-j
cómo eliminar todas las líneas en blanco
:%s,\n\n,^M,g
(haga esto varias veces util todas las líneas vacías desaparecieron)
cómo eliminar todas las líneas en blanco dejando una línea vacía ÚNICA
:%s,\n\n\n,^M^M,g
(haz esto varias veces)
cómo eliminar todas las líneas en blanco dejando DOS líneas vacías AL MÁXIMO,
:%s,\n\n\n\n,^M^M^M,g
(haz esto varias veces)
para ingresar ^ M, tengo que controlar-Q y control-M en Windows
\r
en lugar de Ctrl-M
.
Qué tal si:
:g/^[ \t]*$/d
trabajar con perl en vim:
:%!perl -pi -e s/^\s*$//g
chomp
haría el trabajo también?
Esta función solo elimina dos o más líneas en blanco, coloca las líneas a continuación en tu vimrc, luego usa \ d para llamar a la función
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>
Intenté algunas de las respuestas en esta página, pero muchas de ellas no funcionaron para mí. ¿Tal vez porque estoy usando Vim en Windows 7 (no te burles, solo ten piedad de mí: p)?
Aquí está el más fácil que encontré que funciona en Vim en Windows 7:
:v/\S/d
Aquí hay una respuesta más larga en 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
pegar
:command -range=% DBL :<line1>,<line2>g/^\s*$/d
en su .vimrc, luego reinicie su vim. si usa el comando: 5,12DBL, eliminará todas las líneas en blanco entre la 5ta y la 12a fila. ¡Creo que mi respuesta es la mejor respuesta!
Si algo tiene un doble espacio entre líneas en su texto, entonces este comando eliminará el doble espacio y combinará líneas en blanco repetitivas preexistentes en una sola línea en blanco. Utiliza un delimitador temporal de ^^^ al comienzo de una línea, por lo que si esto choca con su contenido, elija otra cosa. Las líneas que contienen solo espacios en blanco se tratan como en blanco.
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
Esto funcionó para mí:
:%s/^[^a-zA-Z0-9]$\n//ig
Básicamente elimina todas las líneas que no tienen un número o letra. Como todos los elementos de mi lista tenían letras, borró todas las líneas en blanco.