Helm: Suche innerhalb der Pufferfunktion?

11

Eine ziemlich einfache Helmfrage. Was ist das Helmfenster / -befehl / -funktion, mit dem wir regexpinnerhalb eines beliebigen Puffertyps (dh einschließlich schreibgeschütztem Text ) nach Text suchen können (vorzugsweise mit w3m)?

Mit anderen Worten, ich suche nach Helms Äquivalent zu Emacs 'nativen Befehlen für isearch-forward( C-s) / isearch-backward( C-r).

Zur Veranschaulichung: Nach dem Aufrufen eines der nativen isearchBefehle ( C-soder C-r) können Sie den Suchmodus auf zwei Arten beenden:

  1. wir können verlassen und zum ursprünglichen Punkt (via C-g) zurückkehren, oder

  2. Wir können den Puffer vom aktuellen Punkt aus beenden und weiter durchsuchen, dh vom aktuell übereinstimmenden Text ( RETunter anderem über).

Ich suche nach der zweiten dieser beiden Optionen.


Folgendes habe ich bisher versucht:

  • helm-regexp: Dies ist das, was mir am nächsten kommt, aber es entspricht nur dem Äquivalent von C-s/ C-r+ C-g(dh es bringt uns zurück zum ursprünglichen Punkt; keine Option zum Beenden der Suche und zum weiteren Durchsuchen des Puffers aus dem aktuell übereinstimmenden Punkt).

  • helm-do-grep: es scheint, dass dies nur für die Suche nach Text in Dateien ist (dh funktioniert nicht auf w3m)

  • helm-buffer-run-grep/ -zgrep: Das Ausführen dieses Befehls / dieser Funktion führt zu einer Fehlermeldung im Minipuffer:Running helm command outside of context

  • Wenn diese helm-modeOption aktiviert ist, wird die native Funktion von Emacs aufgerufen C-soder C-raufgerufen isearch(sie wird nicht durch die Helm-Oberfläche ersetzt). (Vielleicht können wir eine Einstellung ändern, damit Helm diesen Befehl übernehmen kann? Das heißt, ähnlich wie Helm den nativen Befehl für write-file( C-x C-w) übernimmt, mit dem eine Datei in einem offenen Puffer umbenannt werden kann. Nur Brainstorming.)

Eismann
quelle
1
Sie möchten helm-occurmit follow-modeaktiviert.
Nispio

Antworten:

16

Sie können helm-occel als Werkzeug verwenden, das mit dem grundlegenden Helmmodul dafür geliefert wird. Aber für mich ist Shingo Fukuyamas Helm-Sturzflug eines der besten helmbasierten Tools für die Puffersuche . Sie können es von Github und über MELPA erhalten. Es verfügt über die erforderliche Funktionalität, um Ihren Punkt an der Position des Spiels ablegen zu können (was ein regulärer Ausdruck sein kann). Sie können Cg aber auch verwenden, um den Cursor wieder an die Stelle zu bringen, an der Sie begonnen haben.

Auf der Github-Seite von helm-swoop finden Sie eine ganze Reihe weiterer nützlicher Funktionen, die dieses Paket bietet (einschließlich der Suche nach mehreren Puffern nach helm-multi-swoop und der Möglichkeit, die Zeilen der Ergebnisse so zu bearbeiten, dass die Änderungen vorgenommen werden auf den zugrunde liegenden Puffer angewendet).

dfeich
quelle
Genau. helm-swoopist wirklich eine verbesserte Version von helm-occur.
Tu Do
Ich bin also etwas spät dran. Ich habe es versucht helm-swoop... und ich werde nie zurückkehren! Danke
iceman
Guter Herr, Helmschlag ist etwas, das nicht von dieser Welt ist.
Leo Ufimtsev
5

Sie können helm-occuralle Zeilen anzeigen, die Übereinstimmungen für Ihr Suchmuster enthalten. Sie können mit C-nund C-pin der Liste navigieren und dann drücken RET, um den Helmpuffer zu schließen und den Cursor auf die entsprechende Zeile zu bewegen.

Ich möchte aktivieren, helm-follow-modewenn ich verwende, helm-occurdamit das Quellfenster immer den Kontext der aktuell ausgewählten Übereinstimmung anzeigt. Sie können den Folgemodus wie folgt automatisch aktivieren:

(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
quelle