Hełm: wyszukiwanie w funkcji bufora?


11

Całkiem podstawowe pytanie dotyczące Hełmu. Co to jest okno / polecenie / funkcja steru, które pozwala nam wyszukiwać tekst (najlepiej przy użyciu regexp) w dowolnym buforze (np. W tym tylko do odczytu, takim jak w3m)?

Innymi słowy, szukam odpowiednika Helma dla natywnych poleceń Emacsa dla isearch-forward( C-s) / isearch-backward( C-r).

Aby to zilustrować: po wywołaniu jednego z natywnych isearchpoleceń ( C-slub C-r) możemy wyjść z trybu wyszukiwania na jeden z dwóch sposobów:

  1. możemy wyjść i powrócić do pierwotnego punktu (przez C-g) lub

  2. możemy wyjść i kontynuować przeglądanie bufora z bieżącego punktu, tj. z aktualnie dopasowanego tekstu ( RETmiędzy innymi).

Szukam drugiej z tych dwóch opcji.


Oto, co próbowałem do tej pory:

  • helm-regexp: jest to najbliższa rzecz, której szukam, ale wykonuje ona jedynie ekwiwalent C-s/ C-r+ C-g(tzn. zabiera nas z powrotem do pierwotnego punktu; brak opcji zakończenia wyszukiwania i kontynuowania przeglądania bufora z aktualnie dopasowanego punkt).

  • helm-do-grep: wygląda na to, że służy tylko do wyszukiwania tekstu w plikach (tzn. nie działa na w3m)

  • helm-buffer-run-grep/ -zgrep: uruchomienie tej komendy / funkcji powoduje wyświetlenie komunikatu o błędzie w mini-buforze:Running helm command outside of context

  • kiedy helm-modejest włączony, wywołuje C-slub C-ruruchamia natywną isearchfunkcję Emacsa (nie jest zastępowany interfejsem Helma). (może istnieje ustawienie, które możemy zmienić, aby Helm mógł przejąć to polecenie? tj. podobnie jak Helm przejmuje natywne polecenie for write-file( C-x C-w), którego można użyć do zmiany nazwy pliku w otwartym buforze. po prostu burza mózgów.)


1
Chcesz helm-occurz follow-modewłączoną.
nispio

Odpowiedzi:


16

Możesz użyć polecenia ster-wystąpienie jako narzędzia dostarczanego z podstawowym modułem steru. Ale dla mnie jednym z najlepszych narzędzi do wyszukiwania buforów opartych na sterach jest uderzenie steru Shingo Fukuyamy . Możesz go pobrać z github i za pośrednictwem MELPA. Ma wymaganą funkcjonalność polegającą na upuszczeniu punktu na pozycji dopasowania (co może być wyrażeniem regularnym). Ale możesz także użyć Cg, aby kursor powrócił do początku.

Na stronie github helm-swoop znajdziesz całą masę innych przydatnych funkcji, które oferuje ten pakiet (w tym wyszukiwanie wielu buforów za pomocą helm-multi-swoop i możliwość edycji linii wyników, dzięki czemu zmiany są zastosowane do bufora bazowego).


Zgadzam się. helm-swoopjest naprawdę ulepszoną wersją helm-occur.
Tu Do

Jestem trochę spóźniony do tego frontu. Próbowałem helm-swoop... i nigdy nie wrócę! Dzięki
lodeman

Dobry Boże, Hełm nie jest czymś z tego świata.
Leo Ufimcew

5

Możesz użyć, helm-occuraby zobaczyć wszystkie linie zawierające dopasowania do wzorca wyszukiwania. Możesz używać C-ni C-pdo poruszania się po liście, a następnie naciśnij, RETaby zamknąć bufor steru i przesuń kursor do pasującej linii.

Lubię włączać, helm-follow-modekiedy korzystam, helm-occuraby okno źródłowe zawsze pokazywało kontekst aktualnie wybranego dopasowania. Możesz włączyć tryb śledzenia automatycznie w następujący sposób:

(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)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.