Frage

Ich versuche, den Hexl -Modus zu verwenden, um einige spezielle Zeichen aus einer Textdatei manuell zu entfernen und nicht zu sehen, wie man im Hexl -Modus etwas löscht.

Was ich wirklich möchte, ist die Rendite der Kutsche zu entfernen und Linefeed -Charaktere zu halten. Ist der Hexl -Modus der richtige Weg, dies zu tun?

War es hilfreich?

Lösung

Dafür ist kein Hexl-Modus erforderlich. Machen Sie einfach eine globale Such- und Replace von ^j ^m mit ^J Works für mich. :) Speichern Sie dann die Datei, töten Sie den Puffer und überprüfen Sie die Datei, damit das Fenster den neuen Dateimodus (UNIX vs DOS) anzeigt.

Andere Tipps

Keine Notwendigkeit, Ersatz zu finden. Benutz einfach.

M-x delete-trailing-whitespace

Sie können die Dateicodierung auch durch einstellen

C-x RET f unix

Hoppla. Das muss als zwei wörtliche Zeichen eingegeben werden. Verwenden c-q c-j, c-q c-m Und für die Ersatzzeichenfolge verwenden Sie c-q c-j.

Es gibt auch ein Befehlszeilen-Tool namens namens UNIX2DOS/DOS2UNIX Das existiert speziell, um die Linienenden zu konvertieren.

Angenommen, Sie möchten, dass eine DOS-codierte Datei in Unix-Codierung geändert wird, verwenden Sie das MX-SET-Buffer-File-Coding-System (CX RET F), um das Codierungssystem auf "UNIX" festzulegen und die Datei zu speichern.

Wenn Sie eine Wagenrendite entfernen möchten (normalerweise als angezeigt als ^M) und lassen Sie den Linienfutter. Sie können einfach die Datei ohne Konvertierung besuchen:

M-x find-file-literally /path/to/file

Da eine Datei mit Kutschenrenditen im DOS -Modus im Allgemeinen angezeigt wird (die Wagenrendite verstecken). Die Moduslinie wird wahrscheinlich angezeigt (DOS) auf der linken Seite.

Sobald Sie das getan haben, die, die ^M Wird auftauchen und Sie können sie so löschen, wie Sie es jeder Charakter tun würden.

Sie müssen keinen Hexl-Modus verwenden. Stattdessen:

  • Öffnen Sie die Datei auf eine Weise, die Ihnen diese ^m zeigt. Siehe mx find-file-literal/path/to/Datei oben. In XEMACs können Sie auch Cu CX CF durchführen und binäre Codierung auswählen.
  • Wählen Sie die String, die Sie ersetzen möchten, und kopieren Sie sie mit MW
  • M-% (Abfrage ersetzen) und fügen Sie das ein, was Sie mit CY kopieren möchten
  • Präsentieren Sie die Eingabetaste, wenn Sie aufgefordert werden, was es durch ersetzt
  • Mögliche Presse! Jetzt alle Ereignisse ersetzen

Der Punkt ist, dass Sie es jederzeit auswählen/kopieren können, wenn Sie nicht eingeben, was Sie ersetzen möchten.

(Im Hexl -Modus) Ich bin mir nicht sicher, ob Sie es können Zeichen löschen. Ich habe sie immer in Leerzeichen oder einen anderen Charakter konvertiert, zum regulären Texteditor umgestellt und dort gelöscht.

Aus http://www.xsteve.at/prg/emacs/xsteve-functions.el:

;02.02.2000
(defun xsteve-remove-control-M ()
  "Remove ^M at end of line in the whole buffer."
  (interactive)
  (save-match-data
    (save-excursion
      (let ((remove-count 0))
        (goto-char (point-min))
        (while (re-search-forward (concat (char-to-string 13) "$") (point-max) t)
          (setq remove-count (+ remove-count 1))
          (replace-match "" nil nil))
        (message (format "%d ^M removed from buffer." remove-count))))))

Fügen Sie dies Ihrem hinzu .emacs und führen Sie es durch M-x xsteve-remove-control-M Oder binden Sie es an einen leichteren Schlüssel. Es wird die entfernen ^Ms in Anymode.

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