Uzun dizeleri aramak ve değiştirmek için eğik çizgilerden kaçmak için alternatif


10

Vim arama ve dizeleri yerine yerine, dize her özel karakter kaçmak zorunda herhangi bir alternatif var mı.

Örneğin, aşağıdaki dizeyi eşleştirmek ve bir şeyle değiştirmek istersem

[ERROR] Login unsucessful

Sonra yapmak zorundayım

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

Ve çok sayıda özel karakter içeren karmaşık dizeler için çok daha çirkin ve acı verici hale geliyor

Gibi bir şey yapmak isterim

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

bu da tüm kaçmayı önleyecekti. Bunun gibi bir özellik var mı?

Yanıtlar:


16

very-nomagicAnahtarı kullanabilirsiniz . Ayrıntılar :h \Viçin bakınız. Bu sana verirdi %s/\V[ERROR] Login unsuccessful/something/g. Daha hafif bir versiyonu olan ve yaygın olarak kullanılmayan bir nomagicanahtar da var .\M\V

Ayrıca, kullanmadığınız zamanlarda bile örneğin örneklerde olduğu gibi boşluklardan kaçmak zorunda olmadığınızı unutmayın \V.


Teşekkürler. Tam olarak ne istediğimi. bunu google aramamda anlamadı, neden bilmiyorum.
MohitC

2
@MohitC ben haritasına /için /\vben eşlenen bu yüzden, çoğu aramalar için "çok sihirli" etkinleştirmek için //için /(arama geçmişi yok sayarak değiştiricileri geçmekte için faydalıdır) değiştirilmemiş bir aramayı başlatmak için ve /v/için /\Vhızla arama için tüm sihirli kapatmak için.
Kyle Strand

@MohitC Aslında, kurulumum bundan daha karmaşık, çünkü tüm bağlamlarda mümkün olduğunca tutarlı bir şekilde "çok büyü" kullanmak için bir eklenti kullanıyorum. Cevabımı burada görün .
Kyle Strand

7

Uzaylardan kaçmanıza gerek yok. Yani bu:

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

aslında şöyle olmalıdır:

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

Ve elbette, bu özel karakterleri daha az özel yapmak için çok nomajik "modu" etkinleştirebilirsiniz :

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

Bkz :help /magic.


2

Nomajik bayraklara ek olarak diğer cevaplarda bahsedin.

Genellikle arama dizenizde kesin olmanıza gerek yoktur

Örneğin,

[ERROR] Login unsucessful

İfadeyi kullanabilirsiniz

.ERROR. Login unsucessful

Açıkçası, verilerinizin hedeflediğiniz hedeften farklı ancak ifadeyle eşleşen başka dizeler içermediğini bilmelisiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.