2009-07-23 10 views
6

Voglio trovare una linea che abbia sia "foo" che "bar" in questo ordine ma non necessariamente uno accanto all'altro.Come posso cercare in Vim una linea che ha 2 parole specifiche?

ho provato quanto segue e non ha funzionato:

/foo.*bar 
+3

Forse il tuo problema è l'impostazione 'magia'. Leggi: aiuta la "magia" e: imposta la magia? per vedere se questo è il problema – spatz

+0

che era ... cos'è la magia? –

risposta

11

Usa:

:set magic 
/foo.*bar 

L'impostazione 'magia' determina come VIM tratta i caratteri speciali nelle espressioni regolari. Quando è spento VIM tratta letteralmente tutti i caratteri, il che significa che l'espressione che hai scritto foo.*bar cercherà effettivamente quella stringa. Tuttavia, quando 'magic' è attivo, i regex speciali ottengono il loro significato speciale e funzionano più come ci si aspetta. Si consiglia di utilizzare sempre :set magic a meno che non si tratti di script Vi molto vecchi, quindi basta aggiungerlo al tuo vimrc e sarai impostato.

+0

Sono abbastanza sicuro che questo è un default al giorno d'oggi (almeno il mio vim su Windows). –

+1

Sono d'accordo, è anche il predefinito per, ma non so perché non è stato impostato per Sasha - forse sta usando una versione precedente o invocando vi invece di vim. – spatz

5

funziona per me:

/text.*text2 
+1

Funziona anche per me –

+1

idem; senza distinzione tra maiuscole e minuscole: /FOO.*BAR\c –

+0

Sfortunatamente "funziona per me" non fornisce ragioni per le cause o le cause probabili. – crw

Problemi correlati