2009-09-05 27 views
5

podemos realizar vim sustituto en un conjunto de líneas seleccionándolos en modo visual y entrando en modo comando. se auto rellena el rango seleccionado
: '<, '>Perfoming Vim sustituye en una línea parcial

y podemos realizar como sustituto :' <,'> s/TestSubstitute // gc

me gustaría saber es posible en vim para realizar comandos sustituto parcial en una línea seleccionada en el modo visual, así que algo como

: `<,` `> [seguido de sustituto de comandos ]

Generalmente, copiaré un conjunto de nombres de campo separados por delimeter "," en vim y me gustaría calcular el recuento de columnas que puede determinarse por el número de ocurrencias de coma una vez que se seleccionan todos los nombres de campo en modo visual .

seleccione fname, lastmodtime, lastaccesstime desde fileInfo;

Si selecciono el texto de fname a lastaccesstime en modo visual y me gustaría saber el número de comas en el texto seleccionado.

Gracias de antemano,
Naga Kiran

Respuesta

11

Uso \%V modificador en la expresión del modelo. Obligará a vim a coincidir solo dentro del bloque visual en el que se encuentra o estuvo antes. Utilice el modificador de esta manera:

:s/\%Vpattern/substitution/ 

En el modo visual esto se mostrará como :.

:'<,'>s/\%Vpattern/substitution/ 
+1

Eso funcionó parcialmente para mí. Intenté seleccionar el texto entre paréntesis que comprendía un par de argumentos separados por comas, y luego intenté intercambiarlos usando ": '<,'> s/\% V \ (. * \), \ (. * \)/\ 1, \ 2 ". Comenzó al principio de la selección visual, pero luego operó en el texto desde allí hasta el final de la línea, no solo hasta el final de la selección en la línea. Después de la sustitución, el resaltado se extendió hasta el final de la línea. –

Cuestiones relacionadas