Cerca la selezione in vim


107

Uso i plugin vim e vim per Visual Studio quando scrivo C ++. Spesso, mi trovo a voler cercare una stringa all'interno di una funzione, ad esempio ogni chiamata a object->public_member.memberfunc().

So che vim offre un modo conveniente per cercare una singola parola, premendo *e #, e può anche cercare stringhe digitate usando l'onnipresente /comando barra . Quando si tenta di cercare tutte le istanze di una stringa più lunga come quella sopra, ci vuole un po 'per riscrivere dopo /.

C'è un modo per cercare la selezione? Ad esempio, evidenzia con v, quindi copia con y, c'è un modo per incollare dopo /? C'è una scorciatoia più semplice?


Possibile duplicato di Come cerco il testo selezionato?
acm

Risposte:


154

Controlla questo suggerimento di Vim: Cerca testo selezionato visivamente

Oppure puoi semplicemente strappare il testo selezionato con y e andare alla modalità di ricerca / , quindi puoi incollare l'ultimo testo strappato con Ctrl + R 0


4
@CMS. Grazie. Ottimo suggerimento! Usare: reg per vedere cosa c'è nei tuoi registri e poi usare cntl-R N per ottenere cosa c'è nel registro N è eccellente!
Rob Wells

85

Risposta

  1. Strappa il testo che desideri cercare
  2. q/p
  3. Enter

Spiegazione

q/funziona in modo simile alla ricerca vaniglia /tranne che sei in modalità di comando, quindi in prealtà "incolla" invece di digitare il carattere p. Quindi quanto sopra copierà il testo che stai cercando e lo incollerà in una ricerca.

Per maggiori dettagli digitare :help q/


4
Mi piace questo, perché trovo che digitare <ctrl-r> sia così scomodo.
gennaio

Eccellente! Usando emacs in evil-mode, questo funziona effettivamente, mentre la risposta accettata si rompe miseramente (probabilmente a causa dell'uso della Ctrlchiave).
eestrada

2
Ottimo per stringhe semplici, ma non sfugge ai caratteri speciali regex, come indicato nel commento di questa altra risposta .
Bluu

1
E non hai nemmeno bisogno di strattonarlo. Selezionalo sul visual q/gvpgv

1
@nwildner, q/gvpnon funziona per me. Potresti chiarire il tuo suggerimento?
bam

38

Usa q / invece di solo / . (Stessa cosa con q : ). Ora puoi modificare VIM tramite il tuo comando e la cronologia delle ricerche! (Prova Ctrl-N e Ctrl-P qualche volta).


10

Ho appena appreso (attraverso l'eccellente libro Practical Vim ) che esiste un plugin per questo. Puoi trovare il plugin su GitHub .

Il plugin ti consente di cercare una selezione visiva con *e #.


5
Nota che le altre risposte non escono. Utilizzando questi metodi, i metacaratteri selezionati non verranno ricercati letteralmente, a seconda dell'impostazione corrente magic. Ciò potrebbe anche impedire la ricerca di metacaratteri che richiedono il bilanciamento. Il plugin qui menzionato scapperà prima di cercare il testo selezionato.
Kurt Hutchinson

1
funziona, ma sfortunatamente non puoi usare nper andare al prossimo oggetto trovato, mentre gli approcci di Cory e CMS lo consentono ..
Ayrat

2

Puoi effettivamente selezionare il testo visivamente e premere * e # per cercare l'occorrenza successiva ... Funzionerà allo stesso modo, l'unico avvertimento è che:

Lo spazio bianco nella selezione corrisponde a qualsiasi spazio bianco, durante la ricerca (la ricerca di "ciao mondo" troverà anche "ciao" alla fine di una riga, con "mondo" all'inizio della riga successiva).

http://vim.wikia.com/wiki/Search_for_visually_selected_text


2
per me, selezionare il testo visivamente e poi premere * estende semplicemente la mia selezione visiva.
martin jakubik

Non è possibile per impostazione predefinita a meno che non si inserisca in vimrc la mappatura dalla pagina ..
Ayrat
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.