Cara mencari * hanya * baris saat ini

8

Saya bekerja dengan file data ekstra besar yang mungkin harus saya lihat di Excel ... tapi saya lebih suka tinggal di Emacs. Apakah ada fungsi elisp untuk mencari (dan mengubah font) hanya pada baris saat ini?

wdkrnls
sumber
3
Anda dapat memilih garis, mempersempit ke wilayah itu dan melakukan pencarian inkremental lama polos.
Kaushal Modi
@kaushalmodi: Silakan posting itu sebagai jawaban (bagus) Jika jawaban diterima maka pertanyaan itu tidak lagi muncul di antara mereka yang tidak dijawab. ;-)
Drew
OP: Apa yang Anda maksud dengan "(dan fontifikasi)"?
Drew
@Drew: isearch highlight cocok, yang bagus, tapi sangat lambat.
wdkrnls
1
Ingatlah bahwa Anda dapat memberi tahu Isearch berapa banyak kecocokan yang disorot pada satu waktu: opsi lazy-highlight-max-at-a-time. Lihat juga lazy-highlight-*opsi lain . Tetapi penyorotan ini mungkin memperlakukan seluruh baris sekaligus; tidak tahu Jika tidak, dan pilihan ini tidak membantu, mempertimbangkan mengajukan permintaan tambahan: M-x report-emacs-bug.
Drew

Jawaban:

8

Isearch cukup fleksibel dan jika Anda lelah terus-menerus mempersempit buffer (seperti yang disarankan), Anda mungkin ingin memiliki perintah khusus untuk ini, misalnya

(defun isearch-line-forward (&optional regexp-p)
  (interactive "P")
  (let* ((beg (line-beginning-position))
         (end (line-end-position))
         (isearch-message-prefix-add "[Line]")
         (isearch-search-fun-function
          `(lambda ()
             (lambda (string &optional bound noerror)
               (save-restriction
                 (narrow-to-region ,beg ,end)
                 (funcall (isearch-search-fun-default)
                          string bound noerror))))))
    (isearch-forward regexp-p)))
politza
sumber
10
  • Pilih garis saat ini ( C-a C-SPC C-e)
  • Wilayah sempit ( C-x n n)
  • Lakukan pencarian menggunakan metode apa pun
  • Kembali ke buffer asli dengan melebarkan ( C-x n w)
Kaushal Modi
sumber