Helm: tìm kiếm trong tính năng bộ đệm?


11

Một câu hỏi Helm khá cơ bản. Cửa sổ / lệnh / tính năng Helm cho phép chúng ta tìm kiếm văn bản (tốt nhất là sử dụng regexp) trong bất kỳ loại bộ đệm nào (nghĩa là bao gồm chỉ đọc như w3m)?

Nói cách khác, tôi đang tìm kiếm Helm tương đương với các lệnh gốc của Emacs cho isearch-forward( C-s) / isearch-backward( C-r).

Để minh họa: sau khi gọi một trong các isearchlệnh gốc ( C-shoặc C-r), chúng ta có thể thoát chế độ tìm kiếm theo một trong hai cách:

  1. chúng ta có thể thoát và trở về điểm ban đầu (thông qua C-g) hoặc

  2. chúng ta có thể thoát và tiếp tục duyệt bộ đệm từ điểm hiện tại, tức là từ văn bản hiện đang khớp (thông qua RETcác văn bản khác).

Tôi đang tìm kiếm thứ hai trong hai lựa chọn này.


Đây là những gì tôi đã thử cho đến nay:

  • helm-regexp: đây là thứ gần nhất với những gì tôi đang tìm kiếm nhưng nó chỉ thực hiện tương đương với C-s/ C-r+ C-g(nghĩa là nó đưa chúng ta trở về điểm ban đầu; không có tùy chọn nào để kết thúc tìm kiếm và tiếp tục duyệt bộ đệm từ kết quả khớp hiện tại điểm).

  • helm-do-grep: có vẻ như điều này chỉ để tìm kiếm văn bản trong các tệp (nghĩa là không hoạt động trên w3m)

  • helm-buffer-run-grep/ -zgrep: chạy lệnh / hàm này dẫn đến thông báo lỗi trong bộ đệm mini:Running helm command outside of context

  • khi helm-modeđược bật, gọi C-shoặc C-rhiển thị isearchtính năng gốc của Emacs (nó không được thay thế bởi giao diện của Helm). (có thể có một khung cảnh chúng ta có thể thay đổi rất Helm có thể đi qua lệnh này? tức là, tương tự như cách Helm mất chức Tư Lệnh bản địa cho write-file( C-x C-w) có thể được sử dụng để đổi tên một tập tin trong một bộ đệm mở. chỉ động não.)


1
Bạn muốn helm-occurfollow-modeđược kích hoạt.
nispio

Câu trả lời:


16

Bạn có thể sử dụng helm-xảy ra như một công cụ đi kèm với mô-đun helm cơ bản cho việc này. Nhưng với tôi, một trong những công cụ dựa trên helm tốt nhất để tìm kiếm bộ đệm là helm-swoop của Shingo Fukuyama . Bạn có thể lấy nó từ github và thông qua MELPA. Nó có chức năng cần thiết của bạn là có thể thả điểm của bạn tại vị trí của trận đấu (có thể là một biểu thức chính quy). Nhưng bạn cũng có thể sử dụng Cg để đưa con trỏ trở lại nơi bạn đã bắt đầu.

Trên trang github helm-swoop, bạn sẽ tìm thấy một loạt các chức năng hữu ích khác mà gói này cung cấp (bao gồm tìm kiếm đa bộ đệm bằng helm-multi-swoop và khả năng chỉnh sửa các dòng kết quả, để thay đổi áp dụng cho bộ đệm cơ bản).


Tôi đồng ý. helm-swoopthực sự là một phiên bản cải tiến của helm-occur.
Từ Đô

Vì vậy, tôi hơi muộn một chút về mặt trận này. Tôi đã thử helm-swoop... và tôi sẽ không bao giờ quay trở lại! Cảm ơn
iceman

Chúa tể tốt bụng, helm-swoop là một cái gì đó không phải từ thế giới này.
Leo Ufimtsev

5

Bạn có thể sử dụng helm-occurđể xem tất cả các dòng có chứa kết quả khớp cho mẫu tìm kiếm của bạn. Bạn có thể sử dụng C-nC-pđiều hướng danh sách, sau đó nhấn RETđể đóng bộ đệm Helm và nhảy con trỏ đến dòng phù hợp.

Tôi thích bật helm-follow-modekhi tôi sử dụng helm-occurđể cửa sổ nguồn luôn hiển thị ngữ cảnh của kết quả khớp được chọn hiện tại. Bạn có thể bật chế độ theo dõi tự động như sau:

(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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.