2012-01-16 12 views
5

Tengo una serie de sustituciones de expresiones regulares que hago regularmente, y por lo tanto quiero asignar una clave para hacer esto fácilmente. Sin embargo, si una de las expresiones regulares a sustituir no se encuentra en el archivo, mi asignación de teclas se detiene debido a E486: Pattern not found y no se llevan a cabo más reemplazos. P.ej. si el mapeo en mi vimrc esVim: Ignorar errores en una lista de sustituciones mapeadas

map <F12> :%s/spam/foo/<enter>:%s/ham/bar/<enter>:%s/eggs/baz/<enter> 

y no hay ham en mi archivo, eggs no conseguirá sustituido. ¿Hay alguna bandera que pueda poner en las sustituciones para ignorar los errores? He leído :help regex y :help map sin encontrar nada utilizable.

O bien, ¿hay otra manera más fácil y más obvia de hacer esto que me falta?

+0

(Puede guardar el último '/' si no agrega banderas como 'g' o' e' Birei propuesto: ':% s/spam/foo ' Lo mismo ocurre incluso con el segundo delimitador si solo quiero borrar algo (solo la primera ocurrencia por línea): ':% s/spam ') –

+0

Lo sé. Simplemente no me gusta tener barras abiertas;) – kthy

+0

Las barras no van por pares :-) – romainl

Respuesta

14

Agregue la bandera /e a cada comando de sustitución. No muestra mensajes de error y continúa como si no hubiera ocurrido un error. Esta sería la nueva asignación:

map <F12> :%s/spam/foo/e<enter>:%s/ham/bar/e<enter>:%s/eggs/baz/e<enter> 
+0

Muchas gracias, hace lo que dice en la lata. No sé cómo me perdí eso>. < – kthy

8

Puede añadir una "bandera" al final del patrón:

:%s/spam/foo/e 

no escupir un error si no encuentra spam y que permite continuar.

Ver :help flags.

Cuestiones relacionadas