VIM bul / aramada biri ters eğik çizgilerden ve eğik çizgilerden nasıl kaçabilir?


98

Örneğin, geriye veya ileriye doğru eğik çizgi içeren dizelerle bulup değiştirmek istersem, bu vim'de nasıl başarılabilir? Teşekkür ederim!

Örnekler Bul ve Değiştir: :%s/foo/bar/g

ya tüm oluşumlarını bulmak <dog/>ve yerine koymak istersem<cat\>


3
Kesin bir cevap değil, ama muhtemelen şunu okumalısın: sihire yardım et
Tom Morris

+1 Tom, önemsizden daha fazla normal ifadeyle çalışırken genellikle en mantıklı çözüm.
Randy Morris

@Tom @Randy Ancak ... sunucumdaki vi --helpözel karakterlerden kaçma açıklaması YOKTUR ... bu yüzden insanlar başlamak için stackoverflow'a geliyorlar ...
aequalsb

@aequalsb :help magicYazdığınız şeydir vim. Bu, vim için bir komut satırı argümanı değil.
doubleDown

Yanıtlar:


152

Ters eğik çizgi ile linuxy programlarında başka herhangi bir yerde karakterlerden kaçış yaptığınız gibi:

:%s/<dog\/>/<cat\\>

Ancak bunun yerine farklı bir sınırlayıcı seçebileceğinizi unutmayın:

:%s@<doc/>@<cat\\>@

Bu, hepinizi zaman alıcı, kafa karıştırıcı ters eğik çizgileri bir ton eğik çizgi ile desenlerde yazmaktan kurtarır.

Gönderen belgeler :

/Deseni ve değiştirme dizesini çevreleyen yerine, başka herhangi bir tek baytlık karakter kullanabilirsiniz, ancak alfasayısal bir karakter \, "veya |. Bu, /arama kalıbına veya değiştirme dizesine bir eklemek istiyorsanız kullanışlıdır .


2
Böylece seçtiğiniz sınırlayıcıyı otomatik olarak anlayacak mı?
stormist

13
Evet. 'Den sonraki karakter ssınırlayıcı olarak alınır. Belgelerde bir listeyi nerede bulduğumu bulamıyorum, ancak en azından /:;*%@#geçerli olduğundan oldukça eminim .
Cascabel

Bu, çok sayıda Windows tarzı yol içeren bir dosyada \ ile / içine değiştirirken kullanışlıdır. Teşekkürler.
Isaac Nequittepas

Dokümantasyon, kullanımda bu mesajın almak için: h e146
jcollado

Sınırlayıcıyı değiştirebileceğiniz hakkında hiçbir fikrim yoktu! Bu çok büyük - teşekkürler.
Brettins

22
%s:<dog/>:<cat>

Belirli modeller için can sıkıcı hale gelirlerse / sınırlayıcıları değiştirebilirsiniz.


3
:Sınırlayıcı için +1 . Bunu kullanabileceğini bilmiyordum. Her zaman @'kaçış karmaşası' zamanlarında kullandım
Jeffrey Jose

8

Bunları ters eğik çizgi ile alıntılayın. Ayrıca, eğik çizginin yanı sıra başka bir sınırlayıcı kullanmak da genellikle yardımcı olur.

 :%s#<dog/>#<cat\\>#

veya yedek komut sınırlayıcı olarak eğik çizgi kullanmanız gerekiyorsa

 :%s/<dog\/>/<cat\\>/


2

/Karakteri içeren kayıt değerlerini aramak için benzer bir şey arıyordum (bir makro kaydetmek için). Solüsyon kullanarak arama oldu ?yerine belirteç /.


Not ?geriye doğru bir arama yapmak ve aynı değildir edecektir.
Martin Tournoij

-1

ters eğik çizgi ters eğik çizgi yıldız

/(<- the prompt)\/\*

yani yazdıktan sonra şöyle görünür

/\/\*

1
Bu cevabın altı yıla yakın bir süredir sitede bulunanlardan farkı nedir?
Martin Tournoij
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.