web-dev-qa-db-ja.com

Atomテキストエディタは空の行に「^ M」を追加します

Atomテキストエディターは、この記号をすべての空の行に追加します。

何を、そしてなぜ?

enter image description here

16
Ivan Chong

私はUbuntuLinuxを使用していて、git diffの間に^ M(キャリッジリターン、ラインフィード)に気づきました。

どういうわけか、ステータスバーの下部でCRLFが選択されました。

CRLF in Atom status bar

クリックしてLFに変更しました。

LF in Atom Status Bar

ファイルごとに設定されているようですので、問題のあるファイルごとに変更する必要があります。


私の場合、どういうわけかすべての行末が変更されていたので、git diffは真っ赤な海でした。私は以下を使用して「実際の」変更を識別しました。

git diff --ignore-space-at-eol

ただし、git commitは、コミット履歴の「実際の」変更を埋めてしまうので、次のようにします。

  1. 実行されたgit stash save
  2. アトムの行末を変更しました
  3. 実行されたgit commit -am "fix line endings"
  4. 実行されたgit stash apply

これで行末がなくなり、正確な差分でコミットを行うことができます。

15
Pocketsand

WindowsでAtomテキストエディタを使用していますか?
Windowsのキャリッジリターンは\r\nですが、Unixでは\nです。
^M0xDまたは\r)は、Windowsのキャリッジリターン文字です。
そのファイルは以前にUnixで保存されていた(そしてすでに各行に\nがある)ので、Atomは必要に応じて\rを追加していますウィンドウズ。

詳細については、 this および this を参照してください。

4
Roman Zaitsev

ファイル行末を変更した可能性のあるエディターの下部を確認してください。

通常、Unixの場合はLF

enter image description here

およびWindows用のCRLF

enter image description here

2
Praneeth

私がオンラインで見つけたソリューションのほとんどは、sed、vi、またはemacsの使用を含みます。 Atom(およびおそらく任意のテキストエディタ)内で直接機能するソリューションを見つけました。コマンドラインは必要ありません。

すべての返品を選択するか、すべての行の先頭でセレクターを取得してから、削除して返品を押します。 1秒かかる場合がありますが、すべての^ M文字が削除されます。

これによりインデントが台無しになる可能性がありますが、自動インデントすることはできます。これを行う必要のあるファイルが複数ある場合、これは効率的ではない可能性がありますが、1つのファイルに対しては迅速で汚い解決策です。

1
Wylliam Judd