EMACSでは、CR(^M)を剥がしてLF(^j)文字を残す方法は?
-
19-09-2019 - |
質問
HEXLモードを使用して、テキストファイルからいくつかの特別なcharを手動で削除し、HEXLモードで何かを削除する方法を見ないようにしています。
私が本当に欲しいのは、キャリッジの返品を削除してラインフィードのキャラクターを維持することです。 hexlモードはこれを行う正しい方法ですか?
解決
これにはhexl-modeが必要ありません。 ^jを使用して ^j ^mのグローバルな検索と描写を行うだけです。 :)次に、ファイルを保存し、バッファを殺し、ファイルを再訪して、ウィンドウに新しいファイルモード(UNIX対DOS)が表示されるようにします。
他のヒント
交換を見つける必要はありません。使用するだけです。
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
.
呼ばれるコマンドラインツールもあります unix2dos/dos2unix これは、ラインエンディングを変換するために特に存在します。
DOSエンコードされたファイルをUNIXエンコードに変更すると仮定すると、MX Set-Buffer-File-Coding-System(CX RET F)を使用して、コーディングシステムを「UNIX」に設定してファイルを保存します。
キャリッジリターンを削除する場合(通常はとして表示されます ^M
)そして、ラインフィードを残します。お客様のコンバージョン付きファイルにアクセスできます。
M-x find-file-literally /path/to/file
キャリッジリターンを備えたファイルは通常、DOSモードで表示されるためです(キャリッジリターンを隠す)。モード行が表示される可能性があります (DOS)
左側。
あなたがそれをしたら、 ^M
表示され、キャラクターのように削除できます。
hexl-modeを使用する必要はありません。その代わり:
- それらの ^mを表示する方法でファイルを開きます。上記のmx find-file-ritally/path/to/fileを参照してください。 Xemacsでは、CU CX CFを実行して、バイナリエンコードを選択することもできます。
- 交換したい文字列を選択し、MWを使用してコピーします
- M-%(クエリの交換)を実行し、Cyを使用してコピーするものを貼り付けます
- プレゼントは、それを置き換えるものに促されたときに入力します
- 可能なプレス!次に、すべての発生を置き換えます
ポイントは、交換しようとしているものを入力する方法がなくても、いつでも選択/コピーできるということです。
(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
s Anymodeのs。