Cómo buscar * solo * la línea actual

8

Estoy trabajando con archivos de datos grandes y extra anchos que probablemente debería ver en Excel ... pero prefiero quedarme en Emacs. ¿Hay una función elisp para buscar (y fontify) solo en la línea actual?

wdkrnls
fuente
3
Puede seleccionar la línea, limitar a esa región y hacer la búsqueda incremental antigua simple.
Kaushal Modi
@kaushalmodi: Publique eso como una respuesta (una buena). Si se acepta una respuesta, la pregunta ya no aparece entre las personas sin respuesta. ;-)
Dibujó el
OP: ¿Qué quieres decir con "(y fontify)"?
Dibujó el
@Drew: isearch destaca las coincidencias, lo cual es bueno, pero muy lento.
wdkrnls
1
Tenga en cuenta que puede decirle a Isearch cuántas coincidencias resaltar a la vez: opción lazy-highlight-max-at-a-time. Ver también otras lazy-highlight-*opciones. Pero este resaltado podría tratar una línea completa a la vez; No sé. Si lo hace, y estas opciones no ayudan, considerar la presentación de una solicitud de mejora: M-x report-emacs-bug.
Dibujó el

Respuestas:

8

Isearch es bastante flexible y si se cansa de reducir constantemente el búfer (como se sugirió), es posible que desee tener un comando dedicado para esto, por ejemplo

(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
fuente
10
  • Seleccione la línea actual ( C-a C-SPC C-e)
  • Región estrecha ( C-x n n)
  • Realizar búsquedas usando cualquier método
  • Regrese al búfer original ampliando ( C-x n w)
Kaushal Modi
fuente