Como excluir linhas específicas no editor vim

Como excluir linhas específicas no editor vim

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 ... .
  • :dexclui as linhas.

Se for apenas uma linha, ou um intervalo de linhas, você poderia fazer :<num>dou :<start>,<end>d(por exemplo, :5dpara a quinta linha, ou :9,16dpara 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

informação relacionada