Alternativa per sfuggire alle barre nella ricerca e sostituirla con stringhe lunghe


10

Esiste un'alternativa nella ricerca di vim e nella sostituzione di stringhe, che dover sfuggire a tutti i caratteri speciali nella stringa.

Ad esempio, se voglio abbinare la stringa seguente e sostituirla con qualcosa

[ERROR] Login unsucessful

Quindi devo fare

:%s/\[ERROR\]\ Login\ unsucessful/something/g

E diventa molto più brutto e doloroso per stringhe complesse contenenti molti caratteri speciali

Vorrei fare qualcosa del genere

:%s/"[ERROR] Login unsucessful"/something/g

che eviterebbe ogni fuga. C'è qualche caratteristica come questa?

Risposte:


16

Puoi usare l' very-nomagicinterruttore. Vedi :h \Vper i dettagli. Questo ti darebbe %s/\V[ERROR] Login unsuccessful/something/g. C'è anche l' nomagicinterruttore \M, che è una versione più leggera di \Ve non sembra essere ampiamente usato.

Nota anche che non devi sfuggire agli spazi come fai nel tuo esempio, anche quando non lo usi \V.


Grazie. Esattamente quello che volevo. non l'ho trovato sulla mia ricerca su Google, non so perché.
MohitC

2
@MohitC traccio /per /\vabilitare "molto magico" per la maggior parte delle ricerche, così ho mappato //ad /ad avviare una ricerca non modificato (utile per passare attraverso i modificatori cronologia delle ricerche ignorando) e /v/per /\Vper spegnere rapidamente tutta la magia per la ricerca.
Kyle Strand

@MohitC In effetti, la mia configurazione è più complicata di così, perché uso anche un plugin per usare "molto magico" nel modo più coerente possibile in tutti i contesti. Vedi la mia risposta qui .
Kyle Strand

7

Non è necessario sfuggire agli spazi. Così questo:

:%s/\[ERROR\]\ Login\ unsucessful/something/g

dovrebbe effettivamente essere:

:%s/\[ERROR\] Login unsucessful/something/g

E, naturalmente, puoi abilitare una "modalità" molto nomagica per rendere quei caratteri speciali meno speciali:

:%s/\V[ERROR] Login unsucessful/something/g

Vedere :help /magic.


2

Oltre alle bandiere nomagiche menzionate in altre risposte.

Spesso non è necessario essere precisi nella stringa di ricerca

Ad esempio, per abbinare

[ERROR] Login unsucessful

Potresti usare l'espressione

.ERROR. Login unsucessful

Ovviamente, devi sapere che i tuoi dati non conterranno altre stringhe, differendo dal target previsto ma abbinando l'espressione.

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.