Como posso corresponder "snake_case" automaticamente quando procuro "snake-case" por engano?


8

Eu frequentemente digito "_" como "-" ao fazer uma rápida isearch-forward.

Por exemplo, estou procurando snake_case, digite acidentalmente C-s snake-casee não obtenho resultados. Na melhor das hipóteses, percebo com rapidez suficiente e não preciso excluir muito do termo de pesquisa; na pior das hipóteses, basicamente tenho que digitá-lo novamente.

Existe alguma maneira de ligar isearch-forwardpara alterar minha consulta em um isearch-forward-regexplike snake[-_]case?

Na verdade, preciso procurar com lisp-casebastante frequência que a simples mudança de "-" para "_" cause mais problemas do que resolve.


6
Você pode evitar digitar tudo novamente. Faça M-epara pular para o mini-buffer para editar a sequência de pesquisa enquanto o isearch estiver ativo. Então C-e M-b BKSPC _e C-spara continuar a pesquisa.
precisa saber é o seguinte

Usando um mecanismo de pesquisa correspondente mais moderno e difuso, você simplesmente digita 'sc' e snake-case, SnakeCase e snake_case all match (use ido juntamente com flx ou algo assim, por exemplo)
Tom Regner

@TomRegner Como você faz a pesquisa 'flex' isearch?
Kaushal Modi

bitbucket.org/jpkotta/flex-isearch @kaushalmodi pode fazer
Tom Regner

Respostas:


8

Não consigo imaginar nenhum comportamento automatizado que não lhe cause dor quando não é isso que você quer que ele faça.

Na minha opinião, a recomendação de kaushalmodi M-eé a melhor resposta - facilitar a correção do problema parece preferível a tentar fazer com que a pesquisa leia sua mente.

Observe que isearch é inteligente o suficiente para anotar o primeiro caractere em que a pesquisa falhou e M-ecoloca o cursor nessa posição automaticamente, mesmo que você continue digitando caracteres subsequentes, a sequência de teclas típica para corrigir o padrão e retomar a pesquisa seria apenas:

M-eC-d_C-s


Fantástico! TIL: isearch é inteligente o suficiente para tomar nota do primeiro caractere onde a busca falhou, e M-ecoloca o cursor nessa posição automaticamente
Kaushal Modi

Eu não sabia M-e, o que certamente torna as coisas mais fáceis, especialmente porque ela volta ao erro de digitação.
Tom

5

Se você usar swiper e procurar snake case, ele irá corresponder tanto snake_casee snake-case.

swiperé uma nova isearchalternativa que fornece uma visão geral do minibuffer enquanto você pesquisa.

swiper.png

Na imagem acima, a entrada é ivy mque se traduz no regex ivy.*m. Existem 36 correspondências para este regex. Você pode navegar entre eles com C-s/ C-r ou C-n/ C-p.

Você pode instalar swipercom M-x package-install. Está disponível no MELPA e no GNU ELPA.


swiper (e swiper-helm) são limpos. Adicionei-os à minha configuração e estou testando-os por alguns dias. Embora não seja exatamente o que eu estava procurando, como vou precisar digitar algo diferente do que estou procurando, vai ver se me acostumo. Além disso, tem alguma idéia de como fazer o Cw e o Me trabalharem no modo swiper?
Tom

O que é C-we M-edeveria fazer? Você pode postar em github.com/abo-abo/swiper/issues se quiser que eu adicione algo.
precisa saber é

Eu é descrito nos comentários e outras respostas - edita a pesquisa no minibuffer. Cw expande o termo de pesquisa com o símbolo sob o cursor.
Tom

OK, você não precisa M-epara swiper, já está em M-e. E para colocar a coisa em questão, pressione M-n. Ainda não há como expandi-lo, mas você pode continuar digitando.
precisa saber é

Mn é o que eu estava procurando, é bom saber. O recurso útil Me é que ele move o ponto para o primeiro caractere que não corresponde, mas não sei se isso é prático com a correspondência difusa.
Tom
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.