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 g
o gc
que operan en todo el archivo con %
.
En este archivo:
hello hello
hello
hello hello hello
hello
Si lo hago %s/hello/goodbye/g
me sale
goodbye hello
goodbye
goodbye hello hello
goodbye
Todo lo que tengo en mi .vimrc
búsqueda / reemplazo es
set hlsearch
set ignorecase
set incsearch
substitute
Nicolas Scotto Di Perto
fuente
fuente
vimrc
.:echo &gd
y qué sucede si agrega una segundag
bandera como esta:%s/hello/goodbye/gg
o si elimina lag
bandera por completo? Si la salida de:echo &gd
es1
, intente agregarset nogdefault
al final de suvimrc
.set nogdefault
como dijiste y funciona, por cierto. ¡Gracias!Respuestas:
Tal vez usted, o un complemento, haya habilitado la opción
'gdefault'
. Esta opción agrega la banderag
automáticamente cada vez que realiza una sustitución.Entonces, cuando agrega manualmente la bandera
g
mientras'gdefault'
está habilitada, es como si tuviera 2g
banderas 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
g
bandera (porquegdefault
ya lo hizo), y cuando solo quiere sustituir la primera aparición del patrón en una línea, agrega lag
bandera (porque 2g
banderas son lo mismo que ninguna).fuente