Dopo aver cercato qualcosa, se si preme //
, sembra che si ottenga il risultato successivo. In che modo è diverso da n
? Come dovresti usarlo? Che cosa corrisponde //e
e quali altre opzioni esistono per //
?Come funziona il comando di ricerca `//` in Vim?
risposta
comando La ricerca è il seguente formato:
/pattern/offset<cr>
Se la parte pattern
è lasciato fuori, la ricerca guarda per l'ultima modello che è stato cercato. Se l'offset viene omesso, non viene applicato alcun offset. L'offset è fondamentalmente cosa fare al cursore una volta trovato l'articolo pattern
.
La maggior parte vi
utenti hanno familiarità con la variazione, senza un offset, /pax<cr>
e la ripetizione dell'ultima ricerca, /<cr>
, che equivale a n
.
Negli esempi specifici, //<cr>
corrisponde a /<cr>
e significa ripetere l'ultima ricerca e applicare nessun offset.
D'altra parte, //e<cr>
significa ripetere l'ultima ricerca e spostare il cursore alla fine dell'elemento trovato. Gli offset sono:
[num] [num] lines downwards, in column 1
+[num] [num] lines downwards, in column 1
-[num] [num] lines upwards, in column 1
e[+num] [num] characters to the right of the end of the match
e[-num] [num] characters to the left of the end of the match
s[+num] [num] characters to the right of the start of the match
s[-num] [num] characters to the left of the start of the match
b[+num] [num] identical to s[+num] above (mnemonic: begin)
b[-num] [num] identical to s[-num] above (mnemonic: begin)
;{pattern} perform another search, see |//;|
A più o meno senza un num
utilizza 1
.
Risposta perfetta e solida! Grazie! – Chetan
//<CR>
significa ripetere la ricerca dell'ultimo motivo senza offset.
//e<CR>
significa ripetere la ricerca dell'ultimo modello, ma atterrare alla fine della partita.
n
è lo stesso /<CR>
in quanto utilizza l'ultimo modello e l'ultimo offset, tuttavia n
mantiene l'ultima direzione mentre /
trova sempre il prossima partita.
Vedere :h last-pattern
e :h search-offset
per una spiegazione approfondita di questi comandi e delle relative opzioni.
Quindi, '//' inizia la ricerca dalla parte superiore del file, quindi? – paxdiablo
No, cerca in avanti da dove ti trovi. –
L'offset è (generalmente) il punto in cui ci si trova nel file, a partire dall'alto. '//' ripeterà la ricerca da dove vi trovate, mentre 'n' ripeterà la ricerca da dove era l'ultima partita. A proposito, è possibile usare '//' anche nei comandi sostitutivi e globali. Utile se hai un po 'complicato di abbinamento da fare e vuoi provarlo prima con una ricerca regolare. – Alligator
Una delle belle funzionalità di //
è che è possibile utilizzarlo con il comando s
. Quindi, se inizialmente cerchi /Foo
e poi decidi di sostituirlo con Bar
, puoi farlo senza ripetere il pattern. Basta fare :%s//Bar/g
Ovviamente questo è molto più utile se il modello è un po 'più complesso.
Le domande frequenti sono abbastanza chiare: "strumenti software comunemente usati dai programmatori", quindi non penso che questo debba essere chiuso. Non vedo molti contabili o impiegati che usano Vim :-) – paxdiablo
Haha, e c'è anche un intero tag dedicato a Vim. – Chetan