Modo maligno e expressões regulares

10

No Vim, se eu quiser procurar por todos os nomes de variáveis ​​LX em que X é um número, posso simplesmente digitar /L\d. No entanto, isso não parece funcionar evil.

Existe outra sintaxe para expressões regulares no modo Evil, ou precisarei recorrer a algumas funcionalidades do Emacs para pesquisar e substituir usando expressões regulares?

Estou usando spacemacs, e sou bastante ignorante em relação à maioria das coisas no Emacs, permanecendo feliz no modo Evil o dia todo :).

Michelrandahl
fonte
Onde você está tentando pesquisar? Em um documento ou nas variáveis ​​globais do emac?
Jules
Eu estou pesquisando em um documento de texto
Michelrandahl 4/16
Você está usando isearchou algo parecido helm-swoopou swiper? Os dois últimos devem ser capazes de fazer o que você deseja com facilidade. Se você quiser usar o normal, isearchfunção, mas quer usar um olhar diferente motor regexp na github.com/benma/visual-regexp-steroids.el
Jules

Respostas:

7

evilusa as instalações de regexp do Emacs sob o capô. Infelizmente, o Emacs não parece ter uma classe de sintaxe separada para dígitos e não reconhece a classe \d regexp .

Portanto, para corresponder à sua variável denominada LXonde Xestá um dígito, parece que você está preso ao desajeitado /L[0-9]ou até mais desajeitado /L[[:digit:]].

Observe que, em princípio, parece que você poderia usar os códigos de caracteres listados por 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).

De acordo com describe-categories, os dígitos são da categoria 6. Portanto, /L\c6deve funcionar (embora não funcione para mim, mesmo que outras categorias funcionem). Ainda assim, você não economizaria muita digitação embaraçosa em comparação com /L[0-9].

Dan
fonte
Muito obrigado! Acho que posso viver com a sintaxe desajeitada por enquanto. Estou feliz em procurar substituir de uma maneira mais conveniente novamente, e acabei de testar que ele ainda funciona com padrões de captura, sim!
Michelrandahl