Domanda

Sto cercando di usare la modalità hexl per rimuovere manualmente alcuni caratteri speciali da un file di testo e non vedo come eliminare nulla in modalità hexl.

Quello che voglio veramente è rimuovere il ritorno del trasporto e mantenere i caratteri di linefeed. È la modalità hexl il modo giusto per farlo?

È stato utile?

Soluzione

Non c'è bisogno di modalità hexl per questo. Basta fare un campo di ricerca e-e-spot di ^j ^m con ^j Works per me. :) Salva il file, uccidi il buffer e rivisita il file in modo che la finestra mostri la nuova modalità file (UNIX vs DOS).

Altri suggerimenti

Non è necessario trovare sostituire. Basta usare.

M-x delete-trailing-whitespace

È inoltre possibile impostare la codifica del file

C-x RET f unix

Oops. Quello ^j ^m deve essere inserito come due personaggi letterali. Uso c-q c-j, c-q c-m e per la stringa di sostituzione, usa c-q c-j.

C'è anche uno strumento di comando chiamato UNIX2DOS/DOS2Unix esiste specificamente per convertire i termini della linea.

Supponendo che tu desideri che un file codificato DOS venga modificato in codifica UNIX, utilizzare il sistema di codifica set-buffer MX (CX RET F) per impostare il sistema di codifica su "UNIX" e salvare il file.

Se si desidera rimuovere un ritorno a carrello (di solito visualizzato come ^M) e lasciare l'alimentazione della linea. Puoi semplicemente visitare il file senza conversione:

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

Perché un file con ritorni di trasporto viene generalmente visualizzato in modalità DOS (nascondendo i ritorni del trasporto). La linea della modalità probabilmente verrà visualizzata (DOS) sul lato sinistro.

Una volta che l'hai fatto, il ^M Verrà visualizzato e puoi eliminarli come faresti con qualsiasi personaggio.

Non è necessario usare la modalità hexl. Invece:

  • Apri il file in un modo che ti mostra quelle ^m. Vedere MX TROVA-FILE-Literalmente/Path/To/File sopra. In Xemacs puoi anche fare Cu CX CF e selezionare la codifica binaria.
  • Seleziona la stringa che si desidera sostituire e copiarla usando MW
  • eseguire m-% (query sostituisci) e incolla ciò che si desidera copiare usando cy
  • Presente Invio quando viene richiesto a ciò che lo sostituisce con
  • Possibile stampa! ora per sostituire tutte le occorrenze

Il punto è che anche se non si inserisce ciò che stai cercando di sostituire, puoi sempre selezionarlo/copiarlo.

(in modalità hexl) Non sono sicuro di poterlo fare Elimina i personaggi. Li ho sempre convertiti in spazi o qualche altro personaggio, sono passato al normale editor di testo e li ho eliminati lì.

Da 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))))))

Aggiungi questo al tuo .emacs e eseguilo via M-x xsteve-remove-control-M o legalo a una chiave più semplice. Spoglia il ^Ms in qualsiasi modalità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top