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
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
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.
Sono abbastanza sicuro che questo è un default al giorno d'oggi (almeno il mio vim su Windows). –
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
funziona per me:
/text.*text2
Funziona anche per me –
idem; senza distinzione tra maiuscole e minuscole: /FOO.*BAR\c –
Sfortunatamente "funziona per me" non fornisce ragioni per le cause o le cause probabili. – crw
C'è anche un ottimo plugin per fare una ricerca booleana in vim:
Forse il tuo problema è l'impostazione 'magia'. Leggi: aiuta la "magia" e: imposta la magia? per vedere se questo è il problema – spatz
che era ... cos'è la magia? –