Cómo eliminar líneas particulares en el editor vim

Cómo eliminar líneas particulares en el editor vim

Supongamos que tengo 50 líneas en mi editor vim y tengo que eliminar líneas particulares (5,9,16,28) en un solo comando.

Respuesta1

Es difícil de manejar manipular líneas separadas a la vez, pero se puede hacer:

:g/\v%5l|%9l|%16l|%28l/d
  • :g/.../- Actuar sobre líneas que coincidan con el patrón /.../.
  • \v-muy magico, menos escape para caracteres especiales en expresiones regulares.
  • %<num>l- coincidir con el número de línea <num>(por lo que %5l|%9l|...coincide con la quinta línea o la novena línea o...).
  • :delimina las líneas.

Si es solo una línea, o un rango de líneas, puede usar :<num>do :<start>,<end>d(por ejemplo, :5dpara la quinta línea o :9,16dpara el rango de líneas de la 9.ª a la 16.ª línea (inclusive).

Respuesta2

:5d|9d|16d|28d

Es cómo poner cuatro comandos individuales seguidos. Pero mejor dale la vuelta:

:28d|16d|9d|5d

Para mantener la numeración constante.


Una forma más flexible es utilizar vimscript. Comprimido en una línea esto es:

:for n in [28,16,9,5] | call deletebufline("%",n,n) | endfor

información relacionada