Pregunta ¿Cómo reutilizar una selección de modo visual?


A menudo, cuando edito el código, selecciono un bloque en modo visual y realizo una búsqueda y reemplazo sobre el bloque. Después de hacer los cambios, sin embargo, deja el modo visual. ¿Cómo se hace un nuevo hallazgo y se reemplaza sobre la misma selección?


147


origen


Bueno, encontré una forma, pero es un poco engorrosa:: '<,'> s / old / new / g ¿Hay alguna manera de hacer esto sin tener que escribir el '<,'>? - labyrinth


Respuestas:


Puede volver a seleccionar la última área visual seleccionada con gv.


212



¡Increíble! @Heptite cómo encontrar este comando solo w \ o Stackoverflow? - skywinder
@skywinder: ayuda gv - Heptite
@Heptite: no estoy seguro de si estás siendo irónico, pero ese comando te muestra qué: gv lo hace una vez que lo sabes. Pero que pasa si yo no lo hizo? Enséñale a un (hombre) a pescar y todo eso. - Ben Thul
@BenThul: Creo que malentendí la pregunta. Conozco muchas de las características de Vim simplemente leyendo la mayor parte de la documentación a lo largo del tiempo, comenzando con ":help". - Heptite
:help select-visual debe guiarlo al manual correcto dentro de vim @skywinder. - nwildner


gv es definitivamente el método más rápido (use la última selección), pero si desea una región de selección guardada estable (o varias), siempre puede crear macros.

Digamos que quiero almacenar una selección de mi método actual, que va desde las líneas 25-35. Puedo crear una macro que selecciona todo el método escribiendo

q    //start recording
a    //use register a
25G  //Go to line 25
V    //visual-line mode
35G  //Go to line 35
q    // stop recording

Entonces puedo recuperar esa selección mecanografiando @a (ejecuta macro en el registro a). Repita con cualquier registro, líneas o secciones de líneas que desee. Obviamente, si realiza cambios en el archivo, la selección también puede cambiar, por lo que es posible que desee considerar el uso de marcas en lugar de números de línea de "codificación rígida".


11



zmpara ingresar que necesita saber los números de línea. Creo que es mejor definir dos marcas y luego usar: 'a,' b para operar en el rango entre ellas (o reemplazar 'con barras negras si queremos granularidad dentro de una línea) - sillyMunky
Sí, el asunto de los números de línea era tonto; lo acabo de usar como ejemplo de cómo crear una macro de selección. Sin embargo, usar una variedad de marcas es una idea interesante ... - AlexMA


gv funciona muy bien para recuperar la última selección. Pero a veces se necesita un poco más.

Si alguna vez necesitó un registro más persistente, eche un vistazo a este complemento Actualmente estamos trabajando en GitHub.

VisualMarks le permite guardar y restaurar áreas visualmente seleccionadas al igual que guarda y marca ubicaciones específicas en sus archivos con m. Después de la instalación, y con las opciones predeterminadas, use:

ma

en modo visual para guardar su selección actual para marcar a, entonces

<a

en modo normal para volver a esta selección.


6



Guau, eso suena realmente genial. ¡Tendré que probar ese plugin! Por cierto, ¿pueden estos VisualMarks persistir con mkview como se puede con las marcas? - labyrinth
@labyrinth no lo sé mkview pero supongo sí ya que las marcas se guardan en un archivo separado y ... Sugiero que intente de todos modos :) Si no persisten como usted desea, estaremos encantados de recibir su solicitud de función en GitHub y try'da procesarlo. - iago-lito


Supongamos que quería reemplazar Goodbye con Hello y se seleccionó el siguiente código:

public static void main(String[] args){
    System.out.println("Goodbye World");
}

Yo escribiría :s/Goodbye/Hello/ y vim reemplazará todas las instancias de Goodbye con Hello

Es simplemente una combinación de las expresiones regulares de vim y las selecciones del modo visual. Cuando selecciona, debe autocompletarse '<,'>


0



Lo siento, eso no es lo que estaba preguntando. Lo que estoy preguntando es ¿cómo reutilizas la selección para hacer otro hallazgo y reemplazarlo en el mismo rango que seleccioné antes? - labyrinth
Después de reemplazarlo, saldrá del modo visual. escribir gv y su modo visual volverá al estado de selección anterior. - Scott Nguyen