¿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
:substitute
operatores línea por línea, lo que explica lo que está viendo en su ejemplo.Respuestas:
%V
coincide dentro del área visual. Ver:help %V
.fuente
Hay
\%V
para eso, ver:h %V
:Para reemplazar
foo
porbar
la selección sólo, utilice:En este caso particular:
fuente
Si desea sustituir dentro de un bloque visual , puede usar el
vis.vim
complemento .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