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...).:d
elimina las líneas.
Si es solo una línea, o un rango de líneas, puede usar :<num>d
o :<start>,<end>d
(por ejemplo, :5d
para la quinta línea o :9,16d
para 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