Helm: cari di dalam fitur buffer?

11

Pertanyaan Helm yang cukup mendasar. Apa jendela Helm / perintah / fitur yang memungkinkan kita mencari teks (lebih disukai menggunakan regexp) dalam semua jenis buffer (yaitu, termasuk read-only seperti w3m)?

Dengan kata lain, saya sedang mencari Helm yang setara dengan perintah asli Emacs untuk isearch-forward( C-s) / isearch-backward( C-r).

Sebagai ilustrasi: setelah menjalankan salah satu isearchperintah asli ( C-satau C-r), kita dapat keluar dari mode pencarian dengan salah satu dari dua cara:

  1. kita dapat keluar dan kembali ke titik semula (via C-g), atau

  2. kita dapat keluar dan melanjutkan penjelajahan buffer dari titik saat ini yaitu, dari teks yang saat ini cocok (melalui RETantara lain).

Saya mencari yang kedua dari dua opsi ini.


Inilah yang saya coba sejauh ini:

  • helm-regexp: ini adalah hal yang paling dekat dengan apa yang saya cari tetapi hanya melakukan yang setara dengan C-s/ C-r+ C-g(yaitu, membawa kita kembali ke titik semula; tidak ada opsi untuk menghentikan pencarian dan terus menelusuri buffer dari yang saat ini cocok dengan titik).

  • helm-do-grep: sepertinya ini hanya untuk mencari teks di dalam file (yaitu, tidak berfungsi di w3m)

  • helm-buffer-run-grep/ -zgrep: menjalankan perintah / fungsi ini menghasilkan pesan kesalahan di buffer mini:Running helm command outside of context

  • ketika helm-modediaktifkan, mengaktifkan C-satau C-rmemunculkan isearchfitur asli Emacs (tidak digantikan oleh antarmuka Helm). (mungkin ada pengaturan yang dapat kita ubah sehingga Helm dapat mengambil alih perintah ini? yaitu, mirip dengan cara Helm mengambil alih perintah asli untuk write-file( C-x C-w) yang dapat digunakan untuk mengganti nama file dalam buffer terbuka. hanya brainstorming.)

tukang es
sumber
1
Anda ingin helm-occurdengan follow-modediaktifkan.
nispio

Jawaban:

16

Anda dapat menggunakan helm-terjadi sebagai alat yang dilengkapi dengan modul helm dasar untuk ini. Tetapi bagi saya, salah satu alat berbasis helm terbaik untuk pencarian buffer adalah gerakan swingo Shingo Fukuyama . Anda bisa mendapatkannya dari github dan via MELPA. Ini memiliki fungsionalitas yang Anda butuhkan untuk dapat menurunkan poin Anda di posisi pertandingan (yang bisa menjadi regexp). Tetapi Anda juga dapat menggunakan Cg untuk mengembalikan kursor ke tempat Anda memulai.

Pada halaman github helm-swoop Anda akan menemukan sejumlah fungsi berguna lainnya yang ditawarkan paket ini (termasuk pencarian multi-buffer oleh helm-multi-swoop dan kemampuan mengedit garis-garis hasil, sehingga perubahannya adalah diterapkan ke buffer yang mendasarinya).

Dfeich
sumber
Saya setuju. helm-swoopbenar-benar versi yang disempurnakan dari helm-occur.
Tu Do
Jadi, saya agak terlambat ke bagian depan ini. Saya mencoba helm-swoop... dan saya tidak akan pernah kembali! Terima kasih
iceman
Tuan yang baik, tamparan-helm bukanlah sesuatu dari dunia ini.
Leo Ufimtsev
5

Anda dapat menggunakan helm-occuruntuk melihat semua baris yang berisi kecocokan untuk pola pencarian Anda. Anda dapat menggunakan C-ndan C-puntuk menavigasi daftar, dan kemudian tekan RETuntuk menutup buffer Helm dan lompat kursor ke baris yang cocok.

Saya suka mengaktifkan helm-follow-modeketika saya menggunakan helm-occursehingga sumber jendela selalu menunjukkan konteks pertandingan yang saat ini dipilih. Anda dapat mengaktifkan mode ikuti secara otomatis sebagai berikut:

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