So suchen Sie * nur * die aktuelle Zeile

8

Ich arbeite mit großen, extra breiten Datendateien, die ich wahrscheinlich nur in Excel anzeigen sollte ... aber ich möchte lieber in Emacs bleiben. Gibt es eine Elisp-Funktion zum Suchen (und Schriftstellen) nur in der aktuellen Zeile?

wdkrnls
quelle
3
Sie können die Linie auswählen, auf diesen Bereich verengen und die einfache alte inkrementelle Suche durchführen.
Kaushal Modi
@kaushalmodi: Bitte poste das als Antwort (eine gute). Wenn eine Antwort akzeptiert wird, erscheint die Frage unter den unbeantworteten nicht mehr. ;-)
Drew
OP: Was meinst du mit "(und fontify)"?
Drew
@Drew: isearch hebt Übereinstimmungen hervor, was nett, aber sehr langsam ist.
wdkrnls
1
Beachten Sie, dass Sie Isearch mitteilen können, wie viele Übereinstimmungen gleichzeitig hervorgehoben werden sollen: Option lazy-highlight-max-at-a-time. Siehe auch andere lazy-highlight-*Optionen. Diese Hervorhebung kann jedoch eine ganze Zeile auf einmal behandeln. Keine Ahnung. Wenn dies der Fall ist und diese Optionen nicht helfen, sollten Sie eine Erweiterungsanforderung einreichen : M-x report-emacs-bug.
Drew

Antworten:

8

Isearch ist sehr flexibel und wenn Sie es leid sind, den Puffer ständig zu verengen (wie vorgeschlagen), möchten Sie möglicherweise einen dedizierten Befehl dafür haben, z

(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
quelle
10
  • Wähle die aktuelle Zeile aus ( C-a C-SPC C-e)
  • Enge Region ( C-x n n)
  • Führen Sie die Suche mit einer beliebigen Methode durch
  • Kehren Sie zum ursprünglichen Puffer zurück, indem Sie ( C-x n w) erweitern
Kaushal Modi
quelle