2011-04-07 17 views
6

La opción "global" no funciona como se esperaba (esto parece haber cambiado solo recientemente, pero aún no puedo rastrear el motivo de la diferencia).Vim global replace (line)

Dada la línea:

aba

que ejecute el comando:

: s/a // g

espero que el resultado sea:

b

Sin embargo, la línea resultante es:

ba

Qué me he perdido?

+1

funciona para mí. ¿Podría haber algo gracioso en tu '~/.vimrc'? – SingleNegationElimination

+1

Sí, se configuró gdefault. Tendré que volver al control de versiones para recordarme a mí mismo cuándo lo cambié. ¡Me siento muy tonto por haberme olvidado de esto! o_O – yawmark

Respuesta

17

Lo más probable es que tenga gdefault en su .vimrc.

De :help gdefault:

When on, the ":substitute" flag 'g' is default on. This means that 
all matches in a line are substituted instead of one. When a 'g' flag 
is given to a ":substitute" command, this will toggle the substitution 
of all or one match. 

Si no está configurando esto en su configuración se puede ver donde se establece mediante la emisión de :verbose set gdefault?.

+1

Eso es todo. ¡Gracias por el recordatorio! Ahora si solo puedo recordar por qué configuré gdefault en primer lugar ...: o) – yawmark

2

Si la entrada y el comando son exactamente como los da, no veo ninguna razón para este comportamiento.

Mi dinero está en la segunda "a" no siendo lo que piensas que es. Por ejemplo, podría ser el Cyrillic "a", i.e. "а" (U+0430). En mi pantalla, los dos son indistinguibles.

+0

Gracias por la información adicional. Sin embargo, fueron de hecho el mismo 'a'. ¡Los escribí! : o) – yawmark