6 Stimmen

Emacs-Makro zum Verbinden von Zeilen?

Ich habe mehrere tausend Zeilen mit abgegrenzten Daten. Leider wurden einige meiner Daten in eine neue Zeile umgebrochen. Wie kann ich alle Zeilen suchen, die meine Begrenzung nicht enthalten, dann mit der vorherigen Zeile verbinden, zur nächsten Zeile springen und dann bis zum Ende des Puffers fortfahren?

Puffer vor

1243|Das ist alles eins
Zeile
1235|Das passt in eine Zeile.
43223|Diese Zeile bricht um
aus irgendeinem Grund.

Puffer nach

1243|Das ist alles eine Zeile
1235|Das passt in eine Zeile.
43223|Diese Zeile bricht aus irgendeinem Grund um.

5voto

jlf Punkte 3411

Dies ist eine gute Aufgabe für Tastaturmakros. Versuchen Sie etwas wie dies:

C-x (
M-x isearch-forward-regexp RET
^[^|]*$ RET
M-^
C-x )

where
  C-x (                            begins recording a keyboard macro, which consists of
  M-x isearch-forward-regexp RET   searching forward using a regular expression
  ^[^|]*$                          representing a line containing no | characters, then
  M-^                              joining the current line to the previous line and
  C-x )                            ending the keyboard macro definition.

Dieses Makro kann manuell mehrfach mit C-x e (kmacro-end-and-call-macro) aufgerufen werden, oder Sie können es als Funktion speichern und programmatisch aufrufen, wie unter http://www.emacswiki.org/emacs/KeyboardMacrosTricks .

4voto

Zsolt Botykai Punkte 48177

Pruebe M-x query-replace-regexp , suchen Sie nach

^\(.\+|.\+\)\n\([^|]\+\)$

Und der Ersatz:

\1\2

HTH

1voto

number23_cn Punkte 4471

(global-set-key (kbd "C-c C-j") 'join-line)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X