Suponha que eu tenha 50 linhas em meu editor vim e precise excluir linhas específicas (5,9,16,28) em um único comando.
Responder1
É difícil manipular linhas separadas de uma só vez, mas pode ser feito:
:g/\v%5l|%9l|%16l|%28l/d
:g/.../
- Atuar nas linhas combinando com o padrão/.../
.\v
-muito mágico, menos escape para caracteres especiais em expressões regulares.%<num>l
- corresponde ao número da linha<num>
(%5l|%9l|...
corresponde à 5ª linha ou à 9ª linha ou ... .:d
exclui as linhas.
Se for apenas uma linha, ou um intervalo de linhas, você poderia fazer :<num>d
ou :<start>,<end>d
(por exemplo, :5d
para a quinta linha, ou :9,16d
para o intervalo de linhas da 9ª à 16ª linha (inclusive).
Responder2
:5d|9d|16d|28d
É como colocar quatro comandos únicos seguidos. Mas é melhor virar o jogo:
:28d|16d|9d|5d
Para manter a numeração constante.
Uma maneira mais flexível é usar o vimscript. Espremido em uma linha isto é:
:for n in [28,16,9,5] | call deletebufline("%",n,n) | endfor