Come riutilizzare una selezione della modalità visiva?


164

Spesso durante la modifica del codice, seleziono un blocco in modalità visiva e faccio una ricerca e lo sostituisco sopra il blocco. Dopo aver apportato le modifiche, tuttavia, lascia la modalità visiva. Come si fa una nuova ricerca e sostituzione sulla stessa selezione?


Beh, ho trovato un modo, ma è un po 'ingombrante::' <, '> s / old / new / g Un modo per farlo senza dover digitare' <, '>?
labirinto,

Risposte:


244

È possibile selezionare nuovamente l'ultima area visiva selezionata con gv.


4
Eccezionale! @Heptite come trovare questo comando da solo senza StackOverflow?
skywinder

6
@skywinder: help gv
Heptite

4
@Heptite: non sono sicuro che tu stia facendo la lingua qui nella guancia, ma quel comando ti mostra cosa: gv fa una volta che lo conosci. E se non lo facessi ? Insegna a un (guai) uomo a pescare e tutto il resto.
Ben giovedì

@BenThul: penso di aver frainteso la domanda. Conosco molte delle funzionalità di Vim semplicemente leggendo nel tempo la maggior parte della documentazione, iniziando con " :help".
Heptite il

2
:help select-visualdovrebbe portarti al manuale corretto all'interno di vim @skywinder.

14

gv è sicuramente il metodo più veloce (usa l'ultima selezione), ma se vuoi una regione di selezione salvata stabile (o più), puoi sempre creare macro.

Diciamo che voglio memorizzare una selezione del mio metodo attuale, che va dalle righe 25-35. Posso creare una macro che seleziona l'intero metodo digitando

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

Posso quindi riavere quella selezione digitando @a(esegui macro nel registro a). Ripeti con qualsiasi registro, linea o sezione di linea che desideri. Ovviamente se si apportano modifiche al file, anche la selezione potrebbe cambiare, quindi si consiglia di utilizzare i segni anziché i numeri di riga "hardcoding".


zmper inserire che è necessario conoscere i numeri di riga. Penso che sia meglio definire due segni e quindi usare: 'a,' b per operare sulla distanza tra di loro (o sostituire 'con backtick se si desidera la granularità all'interno di una linea)
sillyMunky

Sì, la cosa dei numeri di riga era stupida - l'ho appena usata come esempio per come creare una macro di selezione. Usare una serie di marchi è un'idea interessante ...
AlexMA,

6

gvfunziona benissimo per il recupero dell'ultima selezione. Ma a volte uno ha bisogno di un po 'di più.

Se hai mai avuto bisogno di registrazioni più persistenti, dai un'occhiata a questo plugin su cui stiamo attualmente lavorando su GitHub.

VisualMarks ti consente di salvare e ripristinare aree visivamente selezionate proprio come quando salvi e contrassegni posizioni specifiche nei tuoi file m. Dopo l'installazione e con le opzioni predefinite, utilizzare:

ma

in modalità visiva per salvare la selezione corrente da contrassegnare a, quindi

<a

in modalità normale per tornare a questa selezione.


Wow, sembra davvero fantastico. Dovrò provare quel plugin! A proposito, questi VisualMark possono persistere con mkview come puoi fare con i segni?
labirinto,

@labyrinth Non lo so mkviewma .. Immagino di poiché i segni vengono salvati in un file separato e .. Ti suggerisco di provare comunque :) Se non persistono come desideri, saremo lieti di ricevere la tua funzione richiedi su GitHub e prova a elaborarlo.
iago-lito,

1

Supponiamo di voler sostituire Goodbye con Hello e che sia stato selezionato il codice seguente:

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

Vorrei digitare :s/Goodbye/Hello/e Vim sostituirà tutte le istanze di GoodbyeconHello

È semplicemente una combinazione delle espressioni regolari di Vim e delle selezioni della modalità visiva. Quando si seleziona, dovrebbe riempire automaticamente'<,'>


1
Scusa, non è quello che stavo chiedendo. Quello che sto chiedendo è come riutilizzare la selezione per fare un'altra ricerca e sostituzione sullo stesso intervallo selezionato in precedenza?
labirinto,

1
Dopo la sostituzione, uscirai dalla modalità visiva. digitare gve la modalità visiva tornerà allo stato di selezione precedente.
Scott Nguyen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.