it-swarm-ja.com

Emacsがすべての行の終わりに^ mを挿入するのはなぜですか

Linux環境でEmacsがすべての行の最後に^ mを挿入するのはなぜですか?

8
Yazz.com

Emacsの改行とWindows、Unix、Mac、すべて^ M ^ J ^ L

Q:emacsがバッファーに^ Mを表示するのはなぜですか?

A:「^ M」はASCII印刷不可能なキャリッジリターン文字のキャレット記法(ASCII 13)です。emacsがそれを示している場合は、^ Mと^ Jとemacsの文字が混在していることが原因である可能性があります。それらを一貫して改行として解釈することはできません。

これを修正するには、「set-buffer-file-coding-system」を呼び出してから、「mac」、「dos」、「unix」のいずれかを指定します。次に、ファイルを保存します。それでも問題が解決しない場合は、検索と置換を使用して手動で削除できます。

15
ephemient

古い質問だとは思いますが、記録として、ファイルの最後に^ Mが表示される理由は他にもあります。私はちょうど同じ問題を抱えていました。起こったことは次のとおりです。

  1. 私は毎日Emacsで同じテキストファイルを使用していますが、^ Mを見たことがありません。私はこのファイルを使用して個人的なメモを取ります。
  2. 前回、MS Outlookで受け取った電子メールの内容をコピーして貼り付けたファイルを使用しましたが、.
  3. 今日、私は同じ古いファイルを開き、すべての行の最後に^ Mがあり、すべての非ASCII文字が???のような奇妙なコードに置き換えられました。

修正方法:

VIで同じファイルを開き(そうです、私は知っています、大敵)、ハイライトカラーで表示される文字を検索します。私の端末では青です。それらの文字を削除すると、Emacsですべてが正常に機能します。

原因:

この問題は、Outlookからの奇妙な引用符文字が原因で発生しました。面白いことに、Emacsはファイルを再度開くまでこの問題を表示しないため、ファイルに問題があることをすぐに特定するのは困難です。

1
Akira

この質問が解決されたことは知っていますが、 Dos2Unix はUNIX/DOS/Macマシン間のファイル操作用のツールキットの便利な部分です。これは、OS優先の行末を追加/削除するための簡単なコマンドベースのアプローチです。

1
Mike Fisher

主にDOS/Windows環境でEmacsを使用している場合、Emacsは行末システムを正しく認識し、透過的に処理する必要があります。

^ Mがファイルに突然表示される場合があります。これは、おそらくスクリプトを使用して編集され、UNIXの行末の行が追加され、llineの末尾が混在しているためです。

これらの行に^ Mを追加して修正し、ファイルを保存してバッファを強制終了し、再度開くことができます。これで正常に見えるはずで、ステータス行のエンコーディングマーキングとして(DOS)と表示されます。

探す正規表現は\([^^ M] \)$で、\ 1 ^ Mに置き換えます。 Ctrl-Qを使用して、Ctrl-M文字を「引用」することを忘れないでください。

0
Clay Haapala