Vim: modo più veloce per selezionare blocchi di testo in modalità visiva


190

Sto usando vim da un po 'di tempo e sono consapevole che selezionare blocchi di testo in modalità visiva è semplice come SHIFT+ Ve spostare il tasto freccia su o giù riga per riga fino a raggiungere la fine del blocco di testo che ho vuoi selezionato.

La mia domanda è: c'è un modo più veloce in modalità visiva di selezionare un blocco di testo, ad esempio SHIFT+, Vseguito specificando il numero di riga in cui desidero interrompere la selezione? (tramite, :35ad esempio, dove 35 è il numero di riga che voglio selezionare fino a - questo ovviamente non funziona, quindi la mia domanda è scoprire come se si può fare qualcosa di simile a questo ...)


3
+1 Buona domanda perché mi sono ritrovato a fare qualcosa del genere spesso. Mi chiedo se forse questo non è il posto in cui iniziare a usare v%o v/patterno qualcos'altro?
user786653,

9
vip seleziona il paragrafo interno per selezionare la frase interna.
SergioAraujo,

27
V35Gselezionerà visivamente dalla riga corrente alla riga 35, anche V10jo V10kselezionerà visivamente le 10 linee successive o precedenti
Stephan

1
@Stephan, è proprio quello che stavo cercando. Grazie!!
grido il

per la linea selezionando Usa I scorciatoia: nnoremap <Space> V. Quando sei in modalità linea visiva, fai semplicemente clic con il pulsante destro del mouse per definire la selezione (almeno su Linux è così). Comunque, più efficace che solo con la tastiera.
Mikhail V

Risposte:


212

Oltre a ciò che altri hanno detto, puoi anche espandere la tua selezione usando le ricerche di pattern.

Ad esempio, v/fooselezionerà dalla posizione corrente alla prossima istanza di "pippo". Se in realtà si desidera espandere l' istanza successiva di "pippo", ad esempio sulla riga 35, premere semplicementen per espandere la selezione all'istanza successiva e così via.

aggiornare

Non lo faccio spesso, ma so che alcune persone usano ampiamente i segni per effettuare selezioni visive. Ad esempio, se sono sulla linea 5 e desidero selezionare la linea 35, potrei premere maper posizionare il segno asulla linea 5, quindi :35per passare alla linea 35. Shift+ vper accedere alla modalità visiva lineare e infine `aper selezionare nuovamente il segno a.


21
Se è necessario includere il modello che è possibile utilizzare v/foo/e. L' eacronimo di "fine" del modello corrispondente.
Peter Rincker,

6
E puoi modificare da quella linea con gli offset: V / foo / + 5 o V / foo / -5 (sto usando la modalità visuale lineare come l'autore).
bheeshmar,

Cosa faresti se volessi selezionare l'intervallo di testo corrispondente alla tua ricerca; vale a dire: trovare e selezionare (parola intera) il termine di ricerca?
Daniel Park,

5
@DanielPark Per selezionare la parola corrente, utilizzare v i w. Se si desidera selezionare lo spazio non contiguo contiguo corrente, utilizzare v i Shift+ w. La differenza sarebbe quando il cursore è qui MyCla|ss.Method, il primo combo selezionerebbe MyClasse il secondo selezionerebbe il tutto.
Jay,

1
Grazie. Abbiamo scoperto che anche l'utilizzo v i w sconsente di eseguire in modo efficace un'operazione di "sostituzione".
Daniel Park,

113
G                       Goto line [count], default last line, on the first
                        non-blank character linewise.  If 'startofline' not
                        set, keep the same column.
                        G is a one of jump-motions.

V35G raggiunge ciò che desideri


89

Vim è una lingua. Per capire davvero Vim, devi conoscere la lingua. Molti comandi sono verbi e vim ha anche oggetti e preposizioni.

V100G
V100gg

Ciò significa "selezionare la riga corrente fino alla riga 100 inclusa".

Gli oggetti di testo sono dove c'è molta potenza. Introducono più oggetti con preposizioni.

Vap

Ciò significa "seleziona attorno al paragrafo corrente", ovvero seleziona il paragrafo corrente e la riga vuota che lo segue.

V2ap

Questo significa "selezionare attorno al paragrafo corrente e al paragrafo successivo".

}V-2ap

Questo significa "vai alla fine del paragrafo corrente e poi selezionalo visivamente e il paragrafo precedente".

Comprendere Vim come lingua ti aiuterà a ottenere il miglior chilometraggio.

Dopo aver selezionato verso il basso, è possibile combinare con altri comandi:

Vapd

Con il comando sopra, puoi selezionare intorno a un paragrafo ed eliminarlo. Cambia din a yper copiare o in cper cambiare o in ap per incollare.

Una volta capito come funzionano tutti questi comandi, alla fine non sarà necessario selezionare visivamente nulla. Invece di selezionare visivamente e quindi eliminare un paragrafo, puoi semplicemente eliminare il paragrafo con il dapcomando.


} V-2ap L'uso di -2 è davvero intelligente.
Ambareesh,

40

v35G selezionerà tutto dal cursore fino alla riga 35.

vti mette in modalità di selezione, 35specifica il numero di riga a cui vuoi Gandare.

Puoi anche usare v}ciò che selezionerà tutto fino all'inizio del prossimo paragrafo.


16

Per selezionare il numero di righe:

shift + v 9j - seleziona 10 righe


2
Per le piccole gamme va bene, specialmente se abbinato a:set rnu
Peter Rincker,

9

Shift+V n j o Shift+V n k

Questo seleziona la riga corrente e le nrighe successive / precedenti . Lo trovo molto utile.


Questo è un modo semplice che stavo cercando. Grazie
Arsal,

6

v 35 j

testo aggiunto per un minimo di 30 caratteri


6

v%

selezionerà l'intero blocco.

Gioca anche con:

v}, vp, vs, Etc.

Vedi aiuto:

:help text-objects

che elenca i diversi modi per selezionare lettere, parole, frasi, paragrafi, blocchi e così via.



4

È possibile premere vi}per selezionare il blocco circondato da{} parentesi dove si trova attualmente il cursore.

Non importa dove ti trovi all'interno di quel blocco (assicurati solo di trovarti in quello più esterno). Inoltre puoi passare {a tutto ciò che ha una coppia come )o ].


3

Puoi sempre usare solo numeri precedenti per ripetere le azioni:

  • In modalità visiva, digitare 35 e il cursore si sposterà verso il basso 35 volte, selezionando le successive 35 righe
  • In modalità normale:
    • elimina 35 righe 35dd
    • incolla 35 volte 35p
    • annulla 35 modifiche 35u
    • eccetera.

3

semplice basta premere Shift v line number gg

esempio: la linea corrente alla linea 41 Basta premere Shift v 41 gg


1

} significa spostare il cursore sul paragrafo successivo. quindi, usa v}per selezionare l'intero paragrafo.


0

Per selezionare tutto in modalità visiva: digita Esc per essere sicuro di essere in modalità normale

:0 

digitare INVIO per andare all'inizio del file

vG

Puoi usare ggin modalità normale anche per andare alla prima riga.
Huangzonghao,

0

Potrebbe esserti utile sapere:

Per selezionare lo stesso ammontare di righe, ad esempio, utilizzare 1v È necessario aver apportato alcune modifiche per poterlo utilizzare1v , in senso antiorario o lineare.

Oggi ho visto questo fantastico suggerimento da qui :

 :5mark < | 10mark > | normal gvV
 :5mark < | 10mark > | normal gv

È inoltre possibile ripristinare i limiti del blocco visivo in questo modo:

m< .......... sets the visual mode start point
m> .......... sets the visual mode end point

0

Lo uso con fold in modalità rientro:

v aprire la modalità visiva in qualsiasi punto del blocco

zaza toogle due volte

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.