Mode jahat dan ekspresi reguler

10

Di Vim, jika saya ingin mencari semua nama variabel LX di mana X adalah angka, saya cukup mengetik /L\d. Namun, ini sepertinya tidak berhasil evil.

Apakah ada sintaks lain untuk ekspresi reguler dalam mode Jahat, atau apakah saya harus kembali menggunakan beberapa fungsi Emacs untuk mencari dan mengganti menggunakan ekspresi reguler?

Saya menggunakan spacemacs, dan saya cukup mengerti tentang sebagian besar hal di Emacs, dengan senang hati tetap dalam mode Jahat sepanjang hari :).

Michelrandahl
sumber
Di mana Anda mencoba mencari? Dalam sebuah dokumen atau dalam variabel global emac?
Jules
Saya mencari di dalam dokumen teks
Michelrandahl
Apakah Anda menggunakan isearchatau sesuatu seperti helm-swoopatau swiper? Dua yang terakhir harus dapat melakukan apa yang Anda inginkan dengan mudah. Jika Anda ingin menggunakan isearchfungsi normal tetapi ingin menggunakan mesin regexp yang berbeda, lihat github.com/benma/visual-regexp-steroids.el
Jules

Jawaban:

7

evilmenggunakan fasilitas regexp Emacs di bawah tenda. Sayangnya, Emacs tampaknya tidak memiliki kelas sintaks yang terpisah untuk digit, dan tidak mengenali kelas \d regexp .

Jadi, untuk mencocokkan variabel Anda bernama di LXmana Xdigit, sepertinya Anda terjebak dengan kikuk /L[0-9]atau bahkan kikuk /L[[:digit:]].

Perhatikan bahwa, pada prinsipnya, sepertinya Anda dapat menggunakan kode karakter seperti yang tercantum oleh describe-categories:

`\cc`

matches any character whose category is *c*.  Here *c* is a
character that represents a category: thus, 'c' for Chinese
characters or 'g' for Greek characters in the standard
category table. You can see the list of all the currently
defined categories with `M-x describe-categories RET`. You can
also define your own categories in addition to the standard
ones using the `define-category` function (see Categories).

Menurut describe-categories, digit adalah kategori 6. Oleh karena itu, /L\c6harus berfungsi (meskipun tidak untuk saya, meskipun kategori lain melakukannya). Namun, Anda tidak akan menghemat banyak pengetikan saat dibandingkan dengan /L[0-9].

Dan
sumber
Terima kasih banyak! Rasanya saya bisa hidup dengan sintaks yang kikuk untuk saat ini. Hanya senang mencari ganti dengan cara yang lebih nyaman lagi, dan saya hanya menguji bahwa itu bekerja dengan pola penangkapan, ya!
Michelrandahl