Vim e la ricerca di testo contenente una barra obliqua o un punto di domanda

Indice dei Contenuti

Breve premessa sulla ricerca in Vim

La ricerca in Vim viene attivata premendo in modalità normale la barra obliqua "/" (da non confondere con la barra retroversa "\") o il punto di domanda.

Nel primo caso viene attivata la ricerca dal cursore in avanti, nel secondo caso all'indietro.

Per avanzare il puntatore nei risultati della ricerca si preme il carattere "n" (mnemonico per "next"). Per invertire la direzione del puntatore si preme il carattere "N", ovvero "n maiuscolo".

Ma cosa accade se nel testo da cercare fosse presente una barra obliqua o un punto di domanda, ovvero gli stessi caratteri che attivano le ricerche?

La soluzione canonica è quella del carattere di Escape.

Uso del carattere di Escape

Il carattere di Escape è la barra retroversa: "\".

Per trasformare il carattere speciale "/" (in caso di ricerca in avanti) o "?" (in caso di ricerca all'indietro) in normale carattere di testo ricercabile occorre anteporre l'Escape, altrimenti la ricerca darebbe esito negativo.

Esempio: se nel testo da ricercare fosse presente la parola "/test" l'attivazione di una ricerca con i caratteri //test, ovvero con la barra obliqua di attivazione / più la stringa /test, darebbe risultato negativo.

Occorre anteporre il carattere di Escape per neutralizzare la barra obliqua all'interno del testo da cercare: "/\/test".

Mutatis mutandis nel caso di ricerca all'indietro di una stringa in cui sia presente il punto di domanda: "?\?test".

Di seguito una tabella riassuntiva di quanto sopra:

Testo cercatoStringa di ricerca
/test/\\/test
?test?\\?test

Il trucco della ricerca inversa

Si può evitare l'utilizzo del carattere di Escape invertendo l'operatore di attivazione della ricerca, ovvero utilizzando la modalità di ricerca contraria.

Quindi la ricerca senza carattere di Escape con gli stessi esempi sopra riportati sarebbe la seguente:

Testo cercatoStringa di ricerca
/test?/test
?test/?test

Però a questo punto la ricerca andrebbe in direzione contraria rispetto a quella voluta.

Si può, utilizzando il carattere "N", (n maiuscolo) già sopra indicato, invertire la ricerca inversa indirizzando, quindi, il cursore nella medesima direzione che sarebbe stata scelta se non fosse stato presente il carattere speciale all'interno della stringa.

Questa soluzione è molto comoda quando i caratteri da neutralizzare siano più di uno, ovvero al posto di "\/\/\/" si scrive "?///" ed al posto di "\?\?\?" si scrive "/???".

Grazie per l'attenzione.

Avvocato

Loquimur