Шлем: пошук у буферній функції?


11

Досить основне питання Хелма. Що таке вікно / команда / функція Helm, що дозволяє нам шукати текст (бажано, використовуючи regexp) в будь-якому типі буфера (тобто, включаючи лише те, що читається, наприклад w3m)?

Іншими словами, я шукаю еквівалент Гелма в корінних командах Emacs для isearch-forward( C-s) / isearch-backward( C-r).

Для ілюстрації: після виклику однієї з власних isearchкоманд ( C-sабо C-r), ми можемо вийти з режиму пошуку одним із двох способів:

  1. ми можемо вийти та повернутися до початкової точки (через C-g), або

  2. ми можемо вийти та продовжити перегляд буфера з поточної точки, тобто з тексту, що підходить зараз (через RETінші).

Я шукаю другий з цих двох варіантів.


Ось що я спробував поки що:

  • helm-regexp: це найближче до того, що я шукаю, але він виконує лише еквівалент C-s/ C-r+ C-g(тобто, він повертає нас до початкової точки; жодних варіантів для припинення пошуку та продовження перегляду буфера з поточного збігу бал).

  • helm-do-grep: схоже, це лише для пошуку тексту у файлах (тобто не працює на w3m)

  • helm-buffer-run-grep/ -zgrep: запуск цієї команди / функції призводить до повідомлення про помилку в міні-буфері:Running helm command outside of context

  • коли helm-modeце ввімкнено, виклик C-sабо C-rвідкриття нативного isearchфункції Emacs (його не замінює інтерфейс Helm). (можливо, є налаштування, яке ми можемо змінити, щоб Helm міг взяти на себе цю команду? тобто, аналогічно тому, як Helm приймає нативну команду for write-file( C-x C-w), яку можна використовувати для перейменування файлу у відкритому буфері. Просто мозковий штурм.)


1
Ви хочете helm-occurз follow-modeпідтримкою.
nispio

Відповіді:


16

Ви можете використовувати helm-come як інструмент, який постачається з базовим модулем штурвала для цього. Але для мене одним з найкращих інструментів для пошуку буфера на основі керма є штурвал Shingo Fukuyama . Ви можете отримати його з github та через MELPA. У вас є необхідна функціональність, щоб можна було кинути свою точку на позицію матчу (що може бути зворотним виразом). Але ви також можете використовувати Cg, щоб повернути курсор туди, де ви почали.

На сторінці github helm-swoop ви знайдете цілу купу інших корисних функцій, які пропонує цей пакет (включаючи пошук багатобуфера за допомогою helm-multi-swoop та можливість редагування рядків результатів, щоб зміни були застосовано до основного буфера).


Я згоден. helm-swoopдійсно вдосконалена версія helm-occur.
Ту До

Отже, я трохи запізнююся на цей фронт. Я спробував helm-swoop... і я ніколи не повертаюся! Спасибі
iceman

Добрий пане, кермо - це щось не з цього світу.
Лев Уфімцев

5

Ви можете використовувати helm-occurдля перегляду всіх рядків, які містять відповідність для вашого шаблону пошуку. Ви можете використовувати C-nта C-pпереходити по списку, а потім натиснути, RETщоб закрити буфер Helm та перейти курсор до відповідної лінії.

Мені подобається включати, helm-follow-modeколи я використовую helm-occurтак, щоб у вихідному вікні завжди відображався контекст вибраного в даний час відповідності. Ви можете ввімкнути наступний режим автоматично таким чином:

(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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.