a veces mis subtusiones globales no sustituyen todas las coincidencias en una línea. Está confirmado por el hecho de que puedo verlo cuando hago sustituciones con confirmación, una coincidencia se encuentra en una línea con múltiples coincidencias posibles, pero luego pasa a otra línea.
Utilizo los parámetros go gcque operan en todo el archivo con %.
En este archivo:
hello hello
hello
hello hello hello
hello
Si lo hago %s/hello/goodbye/gme sale
goodbye hello
goodbye
goodbye hello hello
goodbye
Todo lo que tengo en mi .vimrcbúsqueda / reemplazo es
set hlsearch
set ignorecase
set incsearch
substitute
Nicolas Scotto Di Perto
fuente
fuente

vimrc.:echo &gdy qué sucede si agrega una segundagbandera como esta:%s/hello/goodbye/ggo si elimina lagbandera por completo? Si la salida de:echo &gdes1, intente agregarset nogdefaultal final de suvimrc.set nogdefaultcomo dijiste y funciona, por cierto. ¡Gracias!Respuestas:
Tal vez usted, o un complemento, haya habilitado la opción
'gdefault'. Esta opción agrega la banderagautomáticamente cada vez que realiza una sustitución.Entonces, cuando agrega manualmente la bandera
gmientras'gdefault'está habilitada, es como si tuviera 2gbanderas que tienen el mismo efecto que ninguna. Por lo tanto, Vim solo sustituye la primera aparición del patrón en cada línea.Por defecto, esta opción está desactivada, pero para asegurarse de que es, usted podría agregar al final de su
vimrc:set nogdefault.Alternativamente, si sospecha que un complemento podría haber habilitado la opción, puede rastrearlo con:
verb set gd?O podría acostumbrarse a la opción, lo que significa que cuando desea sustituir todas las apariciones de un patrón, no agrega la
gbandera (porquegdefaultya lo hizo), y cuando solo quiere sustituir la primera aparición del patrón en una línea, agrega lagbandera (porque 2gbanderas son lo mismo que ninguna).fuente