私はhexlモードを使用してテキストファイルからいくつかの特別な文字を手動で削除しようとしていますが、hexlモードで何かを削除する方法は見当たりません。emacsでは、CR(^ M)を取り除き、LF(^ J)文字を残す方法は?
私が本当に望むのは、改行を削除し、改行文字を保持することです。これを行うには、Hexlモードが正しい方法ですか?
私はhexlモードを使用してテキストファイルからいくつかの特別な文字を手動で削除しようとしていますが、hexlモードで何かを削除する方法は見当たりません。emacsでは、CR(^ M)を取り除き、LF(^ J)文字を残す方法は?
私が本当に望むのは、改行を削除し、改行文字を保持することです。これを行うには、Hexlモードが正しい方法ですか?
このためにhexモードは必要ありません。^J^Mのグローバル検索と置き換えは^ J Worksと一緒にやってください。 :)その後、ファイルを保存し、バッファを殺して、ファイルが新しいファイルモード(Unix vs DOS)を表示するようにファイルを再訪します。
(16進モード)文字を削除することができないとわかりません。私はいつもそれらをスペースやその他の文字に変換し、通常のテキストエディタに切り替えてそこで削除しました。
すばらしい回避策、ありがとう! – Anne
キャリッジリターン(通常は^M
と表示されます)を削除し、改行を残す場合は、キャリッジリターンを持つファイルは、一般的にDOSモード(キャリッジリターンを隠す)に表示されているので
M-x find-file-literally /path/to/file
:あなただけ/アウト任意の変換wのファイルを訪問することができます。モードラインはおそらく(DOS)
を左側に表示します。
これを済ませたら、^M
が表示され、どのような文字でも好きなように削除できます。
^J^Mは2つのリテラル文字として入力する必要があります。 c-q
c-j
,c-m
を使用し、置換文字列にはc-q
c-j
を使用してください。
これはどれくらいの投票権があるのか信じられません!これは、初心者(または忘れ去られた)Emacsユーザーを完全に節約するでしょう! –
はい、これはもっと高くなるはずです。また、^ Mを置き換えて^ Jを無視することもできます。 – ahonnecke
unix2dos/dos2unixというコマンドラインツールもあり、特に行末を変換するために存在します。
hexモードを使用する必要はありません。代わりに:
あなたが置き換えようとしているものを入力する方法がなくても、いつでもそれを選択/コピーできます。
おかげさまで、find-fileについてはわかりませんでした。実際には、私が使っていたhexlモードよりもテキストファイルの制御文字を見るためのより良いツールでした。 –
DOSエンコードファイルをUNIXエンコードに変更する場合は、M-x set-buffer-file-coding-system(C-x RET f)を使用して、コーディングシステムを "unix"に設定してファイルを保存します。 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
を経由して、それを実行したり、簡単にキーにバインドします。それはanymodeの^M
を取り除きます。
これはすばらしい解決策です。ファイル全体を直ちに修正する1つのコマンド。 – DOKKA
交換する必要はありません。ちょうど使用する。
M-x delete-trailing-whitespace
また、それがテキストファイルなら
C-x RET f unix
ファイルエンコーディングを設定すると、私の問題が解決しました! – Ajoy
...なぜ使用HEXLモードによるファイルのエンコーディングを設定することができますか? –
私はキャリッジリターンを取り除き、ラインフィードを残そうとしています...尋ねないでください - この設定ファイルを読んでいるプログラムはそれを望んでいます。 –
+1私も同様の問題がありました。いくつかの奇妙な理由のために、いくつかの16進文字が私のテキストファイルのいくつかの先頭に追加されていました。私はそれらの文字を削除したいだけですが、通常のバッファモードでそれらの文字を見ることはできません。なぜ、 "削除"機能が16進モードでは難しいのですか?それはそこになければならない。 – User1