hexlモードを使用して、テキストファイルからいくつかの特殊文字を手動で削除しようとしていますが、hexlモードで何も削除する方法がわかりません。
私が本当に望んでいるのは、キャリッジリターンを削除し、改行文字を保持することです。Hexlモードはこれを行う正しい方法ですか?
hexlモードを使用して、テキストファイルからいくつかの特殊文字を手動で削除しようとしていますが、hexlモードで何も削除する方法がわかりません。
私が本当に望んでいるのは、キャリッジリターンを削除し、改行文字を保持することです。Hexlモードはこれを行う正しい方法ですか?
交換品を探す必要はありません。使用するだけです。
M-x delete-trailing-whitespace
を介してファイルエンコーディングを設定することもできます
C-x RET f unix
おっとっと。その ^J^M は、2 つのリテラル文字として入力する必要があります。を使用しc-q
c-j
、 c-q
c-m
置換文字列には を使用しますc-q
c-j
。
これにはhexl-modeは必要ありません。^J^M を ^J でグローバル検索して置換するだけでうまくいきます。:) 次に、ファイルを保存し、バッファを削除し、ファイルに再度アクセスして、ウィンドウに新しいファイル モード (Unix と DOS) が表示されるようにします。
また、特に行末を変換するために存在するunix2dos/dos2unixというコマンドライン ツールもあります。
DOSでエンコードされたファイルをUNIXエンコードに変更する場合は、Mx set-buffer-file-coding-system(Cx RET f)を使用して、コーディングシステムを「unix」に設定し、ファイルを保存します。
Hexl モードを使用する必要はありません。その代わり:
ポイントは、置き換えようとしているものを入力する方法がなくても、いつでも選択/コピーできることです。
(hexlモードの場合)文字を削除できるかどうかわかりません。私はいつもそれらをスペースか他の文字に変換し、通常のテキストエディタに切り替えて、そこで削除しました。
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
か、より簡単なキーにバインドします。^M
anymodeでs を削除します。