¡Si! Usa la cbandera para :substitute. De :help substitute:
[c] Confirm each substitution. Vim highlights the matching string (with
hl-IncSearch). You can type: :s_c
'y' to substitute this match
'l' to substitute this match and then quit ("last")
'n' to skip this match
<Esc> to quit substituting
'a' to substitute this and all remaining matches {not in Vi}
'q' to quit substituting {not in Vi}
CTRL-E to scroll the screen up {not in Vi, not available when
compiled without the +insert_expand feature}
CTRL-Y to scroll the screen down {not in Vi, not available when
compiled without the +insert_expand feature}
El uso de ejemplo es simple como pastel:
%s/old/new/c
Esto es muy útil, pero no lo sabía hasta hace 2 semanas :-) E incluso está disponible en ol 'vi :-)
Consejo de bonificación: también puede usar :set nowrapscan; esto evita que Vim se enrolle hacia arriba cuando toca el fondo. He encontrado que esto es especialmente útil al usar la cbandera.
La configuración &incsearch( set incsearch) en Vim es realmente útil. Puedes usarlo junto con un truco útil y poco conocido.
El truco es probar su expresión regular compleja simplemente usando el comando /o ?. Vim usará la &incsearchconfiguración para mostrar coincidencias de forma interactiva. Una vez que esté satisfecho con la expresión regular, puede usar :%s//replacementpara que vim use la búsqueda anterior.
Observe cómo la parte //está en blanco (ahí es donde coloca el texto para buscar). Si lo deja en blanco, le está diciendo a Vim que use la expresión regular de búsqueda anterior. Con esto, puede escribir una expresión regular compleja con /y tener todos los beneficios de set incsearch, y luego usar el %s//replacementcomando para ejecutar realmente la búsqueda y el reemplazo.
Si desea algo similar a incsearch para los :scomandos, consulte vim-over , pero prefiero usar la forma nativa de Vim.
Solía usar una variante de esto: solo use :%s/pattern/replace/y luego presione upara deshacer, puede ver las partes que Vim cambió si ha hlsearchhabilitado. Y puede reemplazar este texto nuevamente con ^R.
Martin Tournoij
7
Mi sustitución interactiva favorita es buscar usando /y recorrer las coincidencias usando n.
Luego selecciona match usando gny luego spara sustituir el texto con lo que quiera.
Y repita moviéndose al siguiente partido y presionando.
Este es un truco muy bueno, porque es: (1) interactivo, (2) puedes ir a la partida anterior si accidentalmente lo omitiste (algo que no puedes hacer usando :s/old/new/gc).
Ayrat
3
En Neovim también existe la 'inccommand'opción que le permite previsualizar el resultado del :scomando mientras lo escribe.
:%s/pattern/replace/
y luego presioneu
para deshacer, puede ver las partes que Vim cambió si hahlsearch
habilitado. Y puede reemplazar este texto nuevamente con^R
.Mi sustitución interactiva favorita es buscar usando /y recorrer las coincidencias usando n.
Luego selecciona match usando gny luego spara sustituir el texto con lo que quiera.
Y repita moviéndose al siguiente partido y presionando.
fuente
:s/old/new/gc
).En Neovim también existe la
'inccommand'
opción que le permite previsualizar el resultado del:s
comando mientras lo escribe.fuente
Para beneficio de todos,
incsearch
se actualizó en vim8 para mostrar también la vista previa a medida que escribe el patrónfuente