Leme: pesquisa no recurso de buffer?


11

Uma pergunta bastante básica sobre o leme. O que é a janela / comando / recurso do Helm que permite pesquisar texto (de preferência usando regexp) em qualquer tipo de buffer (por exemplo, incluindo somente leitura como w3m)?

Em outras palavras, estou procurando o equivalente de Helm aos comandos nativos do Emacs para isearch-forward( C-s) / isearch-backward( C-r).

Para ilustrar: depois de chamar um dos isearchcomandos nativos ( C-sou C-r), podemos sair do modo de pesquisa de duas maneiras:

  1. podemos sair e retornar ao ponto original (via C-g) ou

  2. podemos sair e continuar navegando no buffer a partir do ponto atual, ou seja, do texto atualmente correspondido (por RETmeio de outros).

Estou procurando a segunda dessas duas opções.


Aqui está o que eu tentei até agora:

  • helm-regexp: esta é a coisa mais próxima do que estou procurando, mas apenas executa o equivalente a C-s/ C-r+ C-g(ou seja, leva-nos de volta ao ponto original; nenhuma opção para encerrar a pesquisa e continuar navegando no buffer a partir da correspondência atualmente ponto).

  • helm-do-grep: parece que isso é apenas para procurar texto em arquivos (ou seja, não funciona no w3m)

  • helm-buffer-run-grep/ -zgrep: executar este comando / função resulta em uma mensagem de erro no mini-buffer:Running helm command outside of context

  • quando helm-modeativado, invoca C-sou C-rabre o isearchrecurso nativo do Emacs (não é substituído pela interface do Helm). (talvez exista uma configuração que possamos alterar para que o Helm possa assumir esse comando? ou seja, semelhante à maneira como o Helm assume o comando nativo de write-file( C-x C-w), que pode ser usado para renomear um arquivo em um buffer aberto. basta fazer um brainstorming.)


1
Você quer helm-occurcom follow-modeativado.
Nispio 24/10

Respostas:


16

Você pode usar helm-ocorrem como uma ferramenta que vem com o módulo básico de helm para isso. Mas para mim, uma das melhores ferramentas baseadas em leme para a pesquisa de buffer é o swoop de Shingo Fukuyama . Você pode obtê-lo no github e via MELPA. Ele tem a funcionalidade necessária para poder largar seu ponto na posição da partida (que pode ser uma regexp). Mas você também pode usar Cg para ter o cursor de volta onde você começou.

Na página helm-swoop no github, você encontrará várias outras funções úteis que este pacote oferece (incluindo pesquisas com vários buffers por helm-multi-swoop e a capacidade de editar as linhas dos resultados, para que as alterações sejam aplicado ao buffer subjacente).


Concordo. helm-swoopé realmente uma versão melhorada do helm-occur.
Tu Do

Então, estou obv um pouco atrasado nessa frente. Eu tentei helm-swoop... e nunca mais vou voltar! Graças
iceman

Bom Deus, o leme é algo que não é deste mundo.
Leo Ufimtsev

5

Você pode usar helm-occurpara ver todas as linhas que contêm correspondências para o seu padrão de pesquisa. Você pode usar C-ne C-ppara navegar na lista e pressionar RETpara fechar o buffer do leme e pular o cursor para a linha correspondente.

Eu gosto de ativar helm-follow-modequando uso helm-occurpara que a janela de origem sempre mostre o contexto da correspondência atualmente selecionada. Você pode ativar o modo de acompanhamento automaticamente da seguinte maneira:

(require 'helm-config)

(defvar my-helm-follow-sources ()
  "List of sources for which helm-follow-mode should be enabled")

;; Use helm-follow-mode for the following sources:
(add-to-list 'my-helm-follow-sources 'helm-source-occur)

(defun my-helm-set-follow ()
  "Enable helm-follow-mode for the sources specified in the list
variable `my-helm-follow-sources'. This function is meant to
be run during `helm-initialize' and should be added to the hook
`helm-before-initialize-hook'."
  (mapc (lambda (source)
          (when (memq source my-helm-follow-sources)
            (helm-attrset 'follow 1 (symbol-value source))))
        helm-sources))

;; Add hook to enable helm-follow mode for specified helm 
(add-hook 'helm-before-initialize-hook 'my-helm-set-follow)
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.