2012-09-04 18 views
5

Necesito ejecutar este comando :perldo s/assigned_to(?!_member|_role)/assigned_to_member/g en todos los búferes abiertos. Estoy usando :perldo porque el builtin vim regex (es decir, %s/foo/bar/g) no funciona con mi lookahead negativo por alguna razón.Vim: cómo ejecutar un comando de modo no normal en todos los búferes?

A través de mi investigación he encontrado los comandos :bufdo y :execute "normal <foo>" pero aún no he descubierto cómo combinarlos.

¿Alguien sabe cómo podría ejecutar el comando perldo en todos mis búferes abiertos? Gracias!

Respuesta

8

¿Qué hay de malo en:

:bufdo! perldo s/assigned_to(?!_member|_role)/assigned_to_member/g 
+0

Eso funcionó! ¿Qué hace el '!' Después de ': bufdo'? ¡Eso podría haber sido lo que me estaba perdiendo! – BenHohner

+1

Recomiendo leer ': h bufdo!' En Vim. Si no tiene el tiempo (khm): si 'perldo' falla (no puede reemplazar nada en ninguno de los búferes)" normal "': bufdo' "sale". Con '!' El comando 'perldo' continúa en el siguiente buffer. –

+1

El signo de exclamación fuerza algo (por ejemplo, 'wq!') O actúa como un interruptor de alternancia. Pero depende del comando. En este caso para 'bufdo' si el buffer no puede ser abandonado, entonces el comando fallará. – kprobst

Cuestiones relacionadas