2010-12-16 13 views

Respuesta

22

Puede utilizar v para seleccionar toda la línea, sin patrón:
:v/pattern/d logrará lo que quiere hacer.

Ver :help :v

+7

El uso de este comando global parece preferible al comando de shell porque: (1) es un comando Vim interno y no depende de tener una utilidad grep externa, que podría ser un problema en los sistemas Windows, y (2) no está seguro de esto, pero el filtro de shell devuelve esencialmente un documento completamente nuevo, y el comando global simplemente elimina las líneas, creo que lo global es preferible para mantener el historial de deshacer más pequeño (y por lo tanto más rápido), y (3) simplemente es una buena idea adquirir el hábito de usar Vim globals (: g y: v) porque le permiten realizar acciones arbitrarias en líneas coincidentes, no solo eliminar. –

2

Una forma de hacer esto es con un filtro de shell:

:%!grep pattern 

Este comando pasa toda su archivo (%) a una carcasa (!) que se extiende a través de lacomando y devuelve el resultado a la ventana del editor.

+2

Con todo debido al respeto, la respuesta proporcionada por Xavier T es la correcta. vim proporciona ': v' para este problema exacto. –

+0

Estoy de acuerdo. Sin embargo, la capacidad del filtro de shell es fantásticamente útil por derecho propio. –

2

Usted puede simplemente negar el patrón

:g!/pattern/d 

Esto eliminará todos, pero las líneas seleccionadas.

Cuestiones relacionadas