Come cercare * solo * la riga corrente


8

Sto lavorando con file di dati di grandi dimensioni e molto ampi che probabilmente dovrei solo visualizzare in Excel ... ma preferirei rimanere in Emacs. Esiste una funzione elisp per cercare (e fontificare) solo sulla riga corrente?


3
È possibile selezionare la linea, restringere a quella regione ed eseguire la semplice ricerca incrementale.
Kaushal Modi,

@kaushalmodi: si prega di pubblicarlo come una risposta (buona). Se una risposta viene accettata, la domanda non appare più tra quelle senza risposta. ;-)
Ha

OP: Cosa intendi con "(e fontify)"?
Ha

@Drew: isearch mette in evidenza le partite, il che è carino, ma molto lento.
wdkrnls,

1
Tieni presente che puoi dire a Isearch quante partite evidenziare alla volta: opzione lazy-highlight-max-at-a-time. Vedi anche altre lazy-highlight-*opzioni. Ma questa evidenziazione potrebbe trattare un'intera linea in una volta; Boh. Se è così, e queste opzioni non aiutano, prendere in considerazione la presentazione di una richiesta di miglioramento: M-x report-emacs-bug.
Drew

Risposte:


8

Isearch è abbastanza flessibile e se ti stanchi di restringere costantemente il buffer (come è stato suggerito), potresti voler avere un comando dedicato per questo, ad es.

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

10
  • Seleziona la riga corrente ( C-a C-SPC C-e)
  • Regione stretta ( C-x n n)
  • Esegui la ricerca con qualsiasi metodo
  • Torna al buffer originale allargando ( C-x n w)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.