Frage

Sagen, dass ich eine Linie in einem Emacs-Puffer haben, die wie folgt aussieht:

foo -option1 value1 -option2 value2 -option3 value3 \
    -option4 value4 ...

Ich mag es so aussehen:

foo -option1 value1 \
    -option2 value2 \
    -option3 value3 \
    -option4 value4 \
    ...

Ich möchte jede Option / Wert-Paar auf einer separaten Zeile. Ich möchte auch diese nachfolgenden Zeilen entsprechend gegliederte nach Modus, anstatt einen festen Betrag von Leerzeichen hinzuzufügen. Ich würde es vorziehen, dass die Code-Arbeit auf dem aktuellen Block, an der ersten nicht-leeren Zeile oder Linie zu stoppen, die nicht ein Option / Wert-Paar enthalten, obwohl ich für sie arbeiten an einer ausgewählten Region niederlassen könnte.

Jeder weiß, eine elisp Funktion, dies zu tun?

War es hilfreich?

Lösung

Niemand hatte, was ich suchte, so habe ich beschlossen, mein elisp Handbuch, um zu Staub und mache es selbst. Das scheint gut zu funktionieren, obwohl der Ausgang nicht genau das, was ich gefragt. In dieser Version geht die erste Option auf einer Linie von selbst, anstatt auf der ersten Linie zu bleiben, wie in meiner ursprünglichen Frage.

Andere Tipps

In diesem Fall würde ich einen Makro verwenden. Sie können beginnen, einen Makro mit C-x-Aufnahme (und stoppen es mit C-x Aufnahme). Wenn Sie den Makro-Typ C-x e wiedergeben möchten.

In diesem Fall würde ich geben, C-C-X (C-S-V a l e u C-F C-F \ RET SPC SPC SPC SPC C-x)

Das wäre ein Makro aufzeichnen, die für „Wert“ sucht, bewegt sich vorwärts 2, fügt einen Schrägstrich und Newline und schließlich Räume die neue Linie über bis säumen. Dann könnte man dieses Makro ein paar Mal wiederholen.

EDIT: Ich habe realisiert, Ihr wörtlichen Text nicht so einfach, wie „Wert1“ zu suchen. Sie könnten auch für Räume und durchlaufen die Hits suchen. Zum Beispiel, Schlagen, C-s ein paar Mal nach dem ersten Spiel einige der Spiele zu überspringen.

Hinweis: Da Ihr Beispiel ist „Ad-hoc“ diese Lösung sein. Oft verwenden Sie Makros, wenn Sie eine Ad-hoc-Lösung benötigen. Eine Möglichkeit, das Makro anwenden konsequenter zu machen, ist die ursprüngliche Aussage zu setzen alle auf einer Linie (kann auch durch einen Makro oder manuell durchgeführt werden).

EDIT: Danke für den Kommentar über (im Vergleich zu C- (, Sie hatten Recht, mein Fehler

Ich persönlich tun Sachen wie diese die ganze Zeit.

Aber ich schreibe nicht eine Funktion, es zu tun, wenn ich es tun würde jeden Tag für ein Jahr.

Sie können es leicht tun mit abfrage ersetzen, wie folgt aus:

m-x (query-replace "-Option" "^ Q ^ J -option")

Ich sage ^ Q ^ J, wie das ist, was Sie geben eine neue Zeile zu zitieren und sie in die Zeichenfolge.

Dann drücken Sie ‚y‘ nur für die Saiten zu ersetzen, und ‚n‘ die wierd überspringen Eckfällen Sie würden finden.

Ein weiteres Zugpferd Funktion ist query-replace-regexp, die tun können Ersatz von regulären Ausdrücken.

und auch grep-abfrage ersetzen, die durchführen wird abfrage ersetzen durch Parsen die Ausgabe eines Befehls grep. Dies ist nützlich, weil Sie suchen für „foo“ in 100 Dateien, führen Sie dann die Abfrage-Ersatz bei jedem Auftreten Überspringen von Datei Datei.

Ihr Modus kann dies bereits unterstützen. Im C-Modus und Makefile-Modus, zumindest, M-q (Fill-Absatz) wird Zeile Fortsetzungen in der Fill-Spalte einfügen und Ihre Zeilen erstrecken.

Welcher Modus bearbeiten Sie diese in?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top