Normal ifade eşlemelerine normal mod komutu uygulama


10

Clojure işlev tanımının altında bir belge dizesi eşleştirmek için aşağıdaki normal ifade kullanıyorum:

\vdefn.*\n\s*\zs"([^"]|\n)*"

gqBelirli bir dosyada bu kalıbın tüm eşleşmelerinde normal mod (format biçimlendirme) komutunu çalıştırmanın bir yolu var mı ?

Yanıtlar:


10

Gücü g:

:g/\vdefn.*\n\s*\zs"([^"]|\n)*"/normal gngq

/S arasındaki kısım oldukça açıklayıcıdır, çünkü orijinal sorunuzun düzenli ifadesidir.

normal gngqsonunda biraz ilginç. gnnormal ifadenin bir sonraki eşleşmesini seçer ve gqelbette bu seçimi biçimlendirir (sorunuzda belirttiğiniz gibi).

:ggerçekten harika bir parçası. Bence Vim'in en kullanışlı özelliklerinden biri bu. gEx komutu bir düzenli ifade ve Ex komutu alır ve her satırda regex maçları komutu yürütür. Henüz öğrenmediyseniz :g, verimliliğinizi büyük ölçüde artıracağı için bunu şiddetle tavsiye ederim. Birkaç kaynakları Vim'ın aittir :help :gya g Güç Vim wiki'de.


gnParça hattından seçilmesidir Viçin tetiklenir sonraki desenin meydana (aynı hat üzerinde bir). Vim belgeleri, görsel mod etkinse, seçimin geçerli satırdan sonraki desene kadar uzatıldığını belirtir. Bu istenmeyen davranışlara neden oluyor.

@merb Whoops, bunun farkında değildi. Düzenlenen.
Doorknob

Seçim hala maçın çizgisinden bir sonraki maça kadar. Normal mod komutları arasında manuel olarak adım atmak, //s<cr>beni geçerli satırda maçın başında //e<cr>bıraktığımı , ancak geçerli maçta değil, bir sonraki maçın sonunda bıraktığımı gösterir.

1
Sorun şu gibi görünüyor //s<cr>V. Koştuğumda :normal Vbeklendiği gibi görsel çizgi moduna geçiyorum. :normal //s<cr>İmleci çalıştırdığımda "beklendiği gibi maçın ilkine iner . Koştuğumda :normal //s<cr>Vgörsel bir seçim yapmıyorum.

1
Çözüldü. Komutun olması gerekiyor normal gngq. Düzenleme önermek.
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.