40

hexlモードを使用して、テキストファイルからいくつかの特殊文字を手動で削除しようとしていますが、hexlモードで何も削除する方法がわかりません。

私が本当に望んでいるのは、キャリッジリターンを削除し、改行文字を保持することです。Hexlモードはこれを行う正しい方法ですか?

4

10 に答える 10

93

交換品を探す必要はありません。使用するだけです。

M-x delete-trailing-whitespace

を介してファイルエンコーディングを設定することもできます

C-x RET f unix
于 2010-12-10T05:28:56.143 に答える
33

おっとっと。その ^J^M は、2 つのリテラル文字として入力する必要があります。を使用しc-q c-jc-q c-m置換文字列には を使用しますc-q c-j

于 2009-07-23T18:29:19.400 に答える
10

これにはhexl-modeは必要ありません。^J^M を ^J でグローバル検索して置換するだけでうまくいきます。:) 次に、ファイルを保存し、バッファを削除し、ファイルに再度アクセスして、ウィンドウに新しいファイル モード (Unix と DOS) が表示されるようにします。

于 2009-07-23T18:25:29.330 に答える
9

また、特に行末を変換するために存在するunix2dos/dos2unixというコマンドライン ツールもあります。

于 2009-07-27T19:14:49.657 に答える
8

DOSでエンコードされたファイルをUNIXエンコードに変更する場合は、Mx set-buffer-file-coding-system(Cx RET f)を使用して、コーディングシステムを「unix」に設定し、ファイルを保存します。

于 2009-07-28T07:35:29.713 に答える
4

Hexl モードを使用する必要はありません。その代わり:

  • これらの ^M を表示する方法でファイルを開きます。上記の Mx find-file-literally /path/to/file を参照してください。XEmacs では、Cu Cx Cf を実行して、バイナリ エンコーディングを選択することもできます。
  • 置換する文字列を選択し、Mw を使用してコピーします
  • M-% (クエリ置換) を実行し、Cy を使用してコピーしたいものを貼り付けます
  • 現在 何に置き換えるかを尋ねられたら入力してください
  • 可押し!今すぐすべてのオカレンスを置き換えます

ポイントは、置き換えようとしているものを入力する方法がなくても、いつでも選択/コピーできることです。

于 2009-07-28T00:48:21.907 に答える
3

(hexlモードの場合)文字を削除できるかどうかわかりません。私はいつもそれらをスペースか他の文字に変換し、通常のテキストエディタに切り替えて、そこで削除しました。

于 2009-07-23T13:34:53.890 に答える
1

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

これをあなたに追加して.emacs実行するM-x xsteve-remove-control-Mか、より簡単なキーにバインドします。^Manymodeでs を削除します。

于 2009-08-12T03:52:09.743 に答える