Helm: recherche dans la fonction de tampon?

11

Une question assez basique sur Helm. Quelle est la fenêtre / commande / fonctionnalité de Helm qui nous permet de rechercher du texte (de préférence en utilisant regexp) dans n'importe quel type de tampon (c'est-à-dire, y compris en lecture seule comme w3m)?

En d'autres termes, je cherche l'équivalent de Helm des commandes natives d'Emacs pour isearch-forward( C-s) / isearch-backward( C-r).

Pour illustrer: après avoir invoqué l'une des isearchcommandes natives ( C-sou C-r), nous pouvons quitter le mode de recherche de deux manières:

  1. nous pouvons quitter et revenir au point d'origine (via C-g), ou

  2. nous pouvons quitter et continuer la navigation dans le tampon à partir du point actuel, c'est-à-dire du texte actuellement mis en correspondance (via, RETentre autres).

Je recherche la deuxième de ces deux options.


Voici ce que j'ai essayé jusqu'à présent:

  • helm-regexp: c'est la chose la plus proche de ce que je recherche, mais elle n'effectue que l'équivalent de C-s/ C-r+ C-g(c'est-à-dire qu'elle nous ramène au point d'origine; aucune option pour terminer la recherche et continuer à parcourir le tampon à partir de la correspondance actuelle point).

  • helm-do-grep: il semble que ce soit uniquement pour la recherche de texte dans les fichiers (c'est-à-dire, ne fonctionne pas sur w3m)

  • helm-buffer-run-grep/ -zgrep: l'exécution de cette commande / fonction entraîne un message d'erreur dans le mini-tampon:Running helm command outside of context

  • Quand helm-modeest activé, invoque C-sou C-rfait apparaître la isearchfonctionnalité native d'Emacs (elle n'est pas remplacée par l'interface de Helm). (Peut-être y a-t-il un paramètre que nous pouvons changer pour que Helm puisse reprendre cette commande? c'est-à-dire, similaire à la façon dont Helm reprend la commande native pour write-file( C-x C-w) qui peut être utilisée pour renommer un fichier dans un tampon ouvert. juste un remue-méninges.)

iceman
la source
1
Vous voulez helm-occuravec follow-modeactivé.
nispio

Réponses:

16

Vous pouvez utiliser helm-occur comme un outil fourni avec le module de barre de base pour cela. Mais pour moi, l'un des meilleurs outils à base de barre pour la recherche de tampon est le swoop-helm de Shingo Fukuyama . Vous pouvez l'obtenir sur github et via MELPA. Il a la fonctionnalité requise pour pouvoir déposer votre point à la position du match (qui peut être une expression régulière). Mais vous pouvez également utiliser Cg pour ramener le curseur là où vous avez commencé.

Sur la page github de helm-swoop, vous trouverez tout un tas d'autres fonctions utiles que ce package offre (y compris des recherches multi-tampons par helm-multi-swoop et la possibilité de modifier les lignes des résultats, afin que les changements soient appliqué au tampon sous-jacent).

dfeich
la source
Je suis d'accord. helm-swoopest vraiment une version améliorée de helm-occur.
Tu Do
Donc, je suis un peu en retard sur ce front. J'ai essayé helm-swoop... et je n'y retournerai jamais! Merci
iceman
Bon seigneur, Helm-Swoop n'est pas de ce monde.
Leo Ufimtsev
5

Vous pouvez utiliser helm-occurpour voir toutes les lignes qui contiennent des correspondances pour votre modèle de recherche. Vous pouvez utiliser C-net C-ppour parcourir la liste, puis appuyez sur RETpour fermer le tampon Helm et déplacer votre curseur sur la ligne correspondante.

J'aime activer helm-follow-modelorsque j'utilise helm-occurpour que la fenêtre source affiche toujours le contexte de la correspondance actuellement sélectionnée. Vous pouvez activer automatiquement le mode suivi comme suit:

(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)
nispio
la source