Apakah ada pola seperti ^ dalam vim?


20

Dalam mode normal Vim, yang 0perintah membawa Anda ke kolom pertama pada baris dan ^membawa Anda ke awal logis dari baris (misalnya karakter non-spasi pertama). Di dunia regex, ^cocok dengan karakter pertama di telepon, spasi putih atau tidak. Apakah Vim memiliki pola yang berperilaku seperti perintah '^' - cocok dengan awal logis suatu baris?


Saya pikir ^ dalam regex biasanya cocok dengan awal baris, bukan karakter pertama. ^. akan cocok dengan awal dan kemudian karakter pertama, bukan awal dan kemudian karakter kedua.
— bdsl

Jawaban:


17

Tidak ada jalan pintas untuk mencocokkan karakter non-spasi pertama pada suatu garis, Anda harus membuat sendiri pola tersebut, seperti:

^\s*restofpattern

Jika Anda tidak ingin memasukkan spasi putih dalam pertandingan Anda, Anda harus menggunakan pernyataan nol-lebar, seperti:

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

Tidak persis cantik, tapi setidaknya itu menyelesaikan pekerjaan.


6

Untuk mencocokkan karakter non- spasi pertama , Anda hanya perlu menggunakan \Sseperti biasa.


Jika Anda menggunakan ^dalam regex di vim, itu akan cocok dengan awal baris yang sebenarnya, bahkan jika itu berisi spasi putih.

Misalnya, baris ini dimulai dengan spasi:

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

Perintah vim ini akan menghapus spasi terdepan:

:%s/^ //

menghasilkan sebagai berikut:

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

Jadi, regex akan berperilaku seperti yang Anda harapkan, bahkan jika perintahnya tidak.


Saya kira Anda akan menjelaskan downvote. Jawaban ini, sejauh yang saya tahu, benar.
— Michael Hampton

1
Saya tidak downvote, tetapi dengan klarifikasi: Saya bertanya-tanya apakah Vim memiliki operator yang cocok dengan karakter non-spasi pertama dari garis. The ^operator (seperti semua implementasi regex waras), akan cocok dengan karakter pertama bahkan jika itu adalah spasi.
— Michael

Nah, bagaimana Anda berharap melakukannya secara normal? Biasanya dalam sebuah regex Anda akan menggunakan sesuatu seperti \Suntuk mencocokkan karakter non-spasi pertama.
— Michael Hampton

2
\Sakan cocok dengan karakter non-spasi apa pun . Dengan kata lain, saya bertanya-tanya apakah Vim memiliki singkatan nol-lebar untuk ini: ^\W*\S.
— Michael

1
Tidak ada mesin yang saya sadari menyediakan fungsi itu, tetapi sekali lagi - kapan Anda akan peduli pada mesin tujuan umum? Vim bukan mesin regex tujuan umum. Ini adalah editor yang memiliki mesin regex jadi saya bertanya-tanya apakah itu memiliki konstruksi khusus untuk sesuatu yang hanya penting di dalam editor.
— Michael
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.