Vim'de ^ gibi bir desen var mı?


20

Vim normal kipinde, 0komut sizi satırdaki ilk sütuna ^götürür ve sizi satırın mantıksal başlangıcına götürür (örneğin, boşluk olmayan ilk karakter). Regex dünyasında, ^satırdaki ilk karakterle, boşlukla veya değil ile eşleşir. Vim'in '^' komutu gibi davranan bir çizgisi var mı - bir çizginin mantıksal başlangıcına uyuyor mu?


Bence ^ bir regex'te normalde ilk karakterle değil satırın başlangıcıyla eşleşir. ^. başlangıç ​​ve sonra ikinci karakterle değil, önce ilk karakterle, sonra ilk karakterle eşleşir.
bdsl

Yanıtlar:


17

Bir satırdaki ilk boşluk olmayan karakteri eşleştirmek için hiçbir kısayol yoktur, deseni kendiniz oluşturmanız gerekir:

^\s*restofpattern

Eşleşmenize boşluk eklemek istemiyorsanız, sıfır genişlikli bir iddia kullanmanız gerekir, örneğin:

\(^\s*\)\@<=restofpattern

Tam olarak hoş değil, ama en azından işi halleder.


6

İlk boşluk olmayan karakteri eşleştirmek için \Snormalde yaptığınız gibi kullanırsınız .


^Vim'de bir regex kullanıyorsanız , boşluk içeriyor olsa bile, satırın gerçek başlangıcıyla eşleşir.

Örneğin, bu satır bir boşlukla başlar:

 <- there's a space there you can't see :)

Bu vim komutu baştaki boşluğu kaldıracaktır:

:%s/^ //

aşağıdaki sonuçlandı:

<- there's a space there you can't see :)

Dolayısıyla, regex, komut olmasa bile beklediğiniz gibi davranır.


Sanırım aşağı oyu açıklayacaksın. Bu cevap bildiğim kadarıyla doğru.
Michael Hampton

1
Aşağı oylamadım, ama açıklığa kavuşturma yoluyla: Vim'in hattın ilk boşluk olmayan karakteriyle eşleşen bir operatörü olup olmadığını merak ediyordum. ^(Bütün aklı başında regex uygulamaları gibi) operatörü, bu boşluk olsa bile ilk karakteri ile eşleşir.
Michael

Normalde nasıl yapmayı umuyordun? Genellikle bir regex'te \S, boşluk olmayan ilk karakterin eşleşmesi gibi bir şey kullanırsınız .
Michael Hampton,

2
\Sboşluk olmayan herhangi bir karakterle eşleşir . Vim bunun için bir sıfır genişlikli steno varsa Başka bir deyişle, merak ediyorum: ^\W*\S.
Michael

1
Bildiğim hiçbir motor bu işlevi sağlamıyor, fakat sonra tekrar - genel amaçlı bir motora ne zaman baktınız? Vim genel amaçlı bir regex motoru değil. Bu bir regex motoru olan bir editördür, bu yüzden sadece bir editör içinde önemli olan herhangi bir şey için özel yapıları olup olmadığını merak ediyordum.
Michael
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.