¿Cómo se obtiene vim para reemplazar un personaje dentro de la selección visual solamente y no en otra parte de la línea? Ejemplo:
- Línea:
int arr[] = { 00 01 02 03 04 05 05 /* ... lots more like this*/}; - Selección visual:
{ 00 01 02 03 04 05 05 /*... lots more like this*/} - Mando:
:'<,'>s/\ /\,0x/g - Esperado:
int arr[] = {0x00,0x01,0x02,0x03 /* and so on*/};
Sin embargo, después de realizar estas acciones, el resultado real es:
int,0xarr[],0x=,0x{0x00,0x01,0x02,0x03 /* and so on*/};
¿Hay alguna forma de modificar el comando anterior para producir el resultado esperado? ¿No define '<y '>define el rango en el que funcionan los comandos de búsqueda (y reemplazo)?
substitute
visual-mode
Bhargav Bhat
fuente
fuente

:substituteoperatores línea por línea, lo que explica lo que está viendo en su ejemplo.Respuestas:
%Vcoincide dentro del área visual. Ver:help %V.fuente
Hay
\%Vpara eso, ver:h %V:Para reemplazar
fooporbarla selección sólo, utilice:En este caso particular:
fuente
Si desea sustituir dentro de un bloque visual , puede usar el
vis.vimcomplemento .http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block
Instalar:
Descargue vis.vba.gz desde http://www.drchip.org/astronaut/vim/index.html#VIS
Una vez instalado:
Cuando escriba
:B, verá estoEstá bien, solo estoy diciendo que el comando se aplicará al bloque visual seleccionado actualmente.
Aún mejor, puede ejecutar cualquier comando Ex en el bloque visual, no solo sustituciones. Por ejemplo
:B !sort.fuente