Vim: Come si cerca il testo in modo efficiente?


30

Ogni volta che vuoi cercare del testo in VIM, digiti /e quindi la stringa che stai cercando.

Tuttavia, quando la stringa è lunga e vuoi farlo più volte, c'è un modo per farlo in modo da non dover digitare /andthisreallylongstringpiù di una volta?


12
Ti consiglio di leggere brevemente un cheat sheet o dei suggerimenti di Vim : potresti trovare molti altri modi per ottenere di più da Vim.
RedGrittyBrick,

Protip: ci sono editor di testo per Linux che non richiedono settimane di studio per essere utilizzati.
BlueRaja - Danny Pflughoeft,

4
@BlueRaja: non sono sicuro che questo sia un buon posto per una guerra degli editori. Anche per una guerra del sistema operativo in quanto vi sono anche editor di testo gradevoli e intuitivi per Windows o Mac OS. Dover studiare come essere efficiente con un editor ti renderà probabilmente più efficiente alla fine rispetto alle funzionalità di base.
Benoit,

Risposte:


61

Premi "n" dopo aver completato una ricerca, quindi ripeterà l'azione precedente (ricerca).


12
Inoltre, Nandrà al risultato precedente.
Jin,

15
Inoltre, premendo la freccia su dopo aver /
premuto,

6
Inoltre q/mostrerà una finestra modificabile con tutti i termini di ricerca recenti.
ZioZeiv,

7
Inoltre, premendo /e Invio si ripeterà la ricerca precedente. Colpire ?e Invio ripeterà la ricerca precedente all'indietro.
Andy Lester,

3
/Ctrl-Fè un'alternativa a q/quella che potrebbe essere un mnemonico più semplice (ctrl-f == find). Come q, funziona anche per la modalità di comando.
idbrii,

34

Se la stringa cercata si trova sotto il cursore, è possibile digitare *per cercarla in avanti o #per cercarla all'indietro.


19

Come di solito cerco è qualcosa di simile;

  1. Stampa '/'
  2. Inserisci il termine di ricerca
  3. premere Invio
  4. Usa 'n' e 'N' per spostarti avanti e indietro nella ricerca.

Vim mantiene una cronologia delle tue ricerche, quindi se hai bisogno di ricerche precedenti puoi premere '/' e usare i tasti SU e GIÙ o <Ctrl-P> <Ctrl-N> per sfogliare la cronologia delle ricerche.

Puoi anche usare '?' invece di '/' per cercare all'indietro.

Mi piace anche usare:

set ignorecase smartcase

Ora sarà una ricerca con distinzione tra maiuscole e minuscole se nella stringa di ricerca sono presenti caratteri maiuscoli.


15

Altri due suggerimenti che possono rendere la tua ricerca più efficiente sono set hlsearche set incsearch.

  • set hlsearch, beh, evidenzia i risultati della tua ricerca. Digita :nohper disattivarli quando non ti servono più.

  • set incsearch attiva la ricerca incrementale.

    Estratto da :help incsearch

    Durante la digitazione di un comando di ricerca, mostra dove corrisponde il modello, così come è stato digitato finora. La stringa corrispondente viene evidenziata. Se il modello non è valido o non trovato, non viene mostrato nulla. Lo schermo verrà aggiornato spesso, questo è utile solo su terminali veloci.

    Senza incsearch, i risultati verranno visualizzati solo dopo aver premuto <CR>la parola chiave di ricerca.

    Esempio:

    Vuoi cercare wildignore

    inserisci qui la descrizione dell'immagine

    Digiti /wilde la prima corrispondenza viene evidenziata automaticamente.

    inserisci qui la descrizione dell'immagine

    Quindi digitare ie si passa alla corrispondenza corretta successiva.

    inserisci qui la descrizione dell'immagine


13

Un altro suggerimento non ancora trattato: premendo i caratteri qe /, quindi , verrà visualizzato un elenco dei termini di ricerca precedenti. È possibile modificarli come qualsiasi altra riga di un documento, quindi premere Invio per riutilizzarli per una nuova ricerca.


3
Lo stavo cercando. Questa è una nota importante e molto in tema.
cincodenada,

8

Dopo aver premuto /per avviare la ricerca, è possibile scorrere verso l'alto per scorrere la cronologia delle ricerche.

Puoi inserire un'espressione regolare per evitare di dover digitare l'intero termine di ricerca: and.*longstring


7

Colpire / senza alcun argomento dopo non funziona per te? Su tutti i nostri sistemi, ciò provoca una ripetizione di qualsiasi ricerca effettuata per ultima.


6

C'è un bel modello che puoi seguire per cercare il testo strappato . Quindi non è nemmeno necessario digitare la parola in sé, se ci si è navigati con mezzi diversi da una ricerca. In breve, se sei sul primo carattere della parola che vuoi cercare:

v
e
y
/
Ctrl-r
0
Enter

(quindi continua alla prossima partita con n o N)

Tuttavia *(o #) esegue praticamente la stessa cosa di tutti questi comandi. L'unica differenza è che puoi essere flessibile in base alla quantità di parola che specifichi (anziché e, alla fine della parola, puoi selezionare quanto vuoi, ad es. 9l)


1
  • /string - Cerca avanti per stringa
  • ?string - Cerca di nuovo la stringa
  • n - Cerca la prossima istanza di stringa
  • N - Cerca l'istanza precedente della stringa

1

Molto tempo durante la programmazione che vorrò cercare aVeryLongVariableNameInTheProgram.

In vim puoi facilmente strappare il testo in un buffer / registro e quindi cercarlo:

  • Posiziona il cursore sul primo carattere della parola
  • "Bywper trascinare il testo aVeryLongVariableNameInTheProgramnel buffer B (scegli il tuo preferito, ho usato B)
  • /^RB (barra, Ctrl-R, B) per incollare il buffer B sulla linea di ricerca

Ovviamente puoi anche strattonare fino alla fine della riga, ecc. Invece di strattonare una sola parola: mi capita di usare sempre la sequenza sopra.


1

Inoltre, è possibile incollare il contenuto di qualsiasi registro nel prompt di ricerca premendo Ctrl+ Re quindi il nome del registro, ad esempio, / Ctrl+ R0 Enter.


Ti penso una parola.
dotancohen, il

0

La stringa lunga in cui stai inserendo un nome variabile? O una lunga stringa che è nel tuo testo? Quindi premi *per cercare la parola / stringa sotto il cursore.

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.