Ist es möglich, Übereinstimmungen im Grep-Modus manuell zu entfernen?


9

Nach dem Ausführen wird (grep)der Grep-Puffer mit Übereinstimmungen angezeigt. Einige der Übereinstimmungen sind nicht relevant, und es wäre gut, sie manuell zu entfernen. Auf diese Weise kann ich den grep-Puffer verwenden, um nur die Übereinstimmungen zu speichern, die für die aktuelle Untersuchung relevant sind.

Ist das möglich?

Antworten:


10

Absolut. Und das ist äußerst nützlich . M-x flush-linesund M-x keep-linessind deine Freunde, sowie nur C-ketc.

(Das erste, was Sie tun müssen, ist natürlich C-x C-q, den Puffer beschreibbar zu machen.)


Wenn Sie Bibliothek verwenden Grep + ( grep+.el) , dann haben Sie diese Befehle, die entfernen Kommentarzeilen und Toggle eine solche Entfernung: grepp-remove-comments, grepp-toggle-comments, die in grep Puffer gebunden sind ;und M-;jeweils.

(Grep + bietet Ihnen auch Befehle, die es einfach machen, mehrere Grep-Puffer zu haben: +( grepp-new-buffer), b( grepp-choose-buffer) und r( grepp-rename-buffer-to-last).)


Es gibt auch andere Puffer , die schreibgeschützt sind standardmäßig und die es manchmal sinnvoll sein kann , verwenden C-x C-qund dann bearbeiten sie, insbesondere (IMHO) *Messages*, *Help*und *Colors*(aus M-x list-colors-display). Info verwendet auch einen Befehl an, dass Sie den aktuellen Knoten bearbeiten können.

Leider (IMHO) hat sich Emacs generell von einer solchen Verwendung entfernt, was es schwieriger macht. Zum Beispiel *Help*und *Messages*Puffer haben jetzt Schlüssel in ihren jeweiligen Modi definiert, was bedeutet, dass Sie zum normalen Bearbeiten entweder (1) in einen anderen Modus wechseln oder (2) verwenden C-qmüssen, um bestimmte Zeichen einfügen zu können.


1
Ich werde so weit gehen zu sagen, dass diese Antwort mein Leben verändert hat.
Cammil

;-) ............
Drew

0

Wenn Sie ein böser Benutzer sind, können Sie eine Bindung wie zww 'read-only-modediesen Schalter haben read-only-map. Deaktivieren Sie read-only-modedie evil-deleteZeile (dh dd) und verwenden Sie sie. Natürlich werden dadurch nicht automatisch alle Zeilen entfernt flush-lines. Wenn Sie jedoch eine ganze Region entfernen möchten, ohne komplexe reguläre Ausdrücke zu verwenden, ist dies Ihr Freund.


0

winnow.el bietet einen praktischen kleinen Nebenmodus, der genau für diesen Zweck entwickelt wurde und für die Verwendung in compilation-modePuffern (oder Derivaten, einschließlich grep-mode) vorgesehen ist.

Es aktiviert Tastenkombinationen, die flush-linesund entsprechen keep-lines, und sorgt dafür, dass der Text schreibgeschützt ist.

Key   Function
x     winnow-exclude-lines
m     winnow-match-lines
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.