Macコンピュータにvi / vimのみを使用して編集したテキストファイルがあります。私は今日viを使って開いたときにあちこちにたくさんの文字があることを発見しました^M
。今日別にした唯一のことはecho "some text" >> file.txt
以前にリダイレクトしただけですが、他のファイルで再現できないようです。
この^M
文字が現れるのはなぜですか?
答え1
これは仮説であり、質問者は次のことをすべて実行しないと思うので、部分的な答えです。
のようにコメント渡すラルフ・レンキスト「Macでは^M
行終端として使用され、Windows^M^J
ではUnixとして使用されます^J
。」 Vimは3つの形式をすべて処理できます。たとえば、新しいファイルを作成して(たとえば)を使用して保存するときに使用するファイルを指定できます:set ff=mac
。
vimでファイルを開くと、vimは自動的にエンコードを決定し、適切に改行を表示できます。しかしvimはfileformats
。したがって、もしfileformats=unix,dos
そうなら、vimはファイルをMac形式で開くことを決して考慮しません。したがって、Mac vimでファイルを作成して(たとえば、Macの改行を使用)、Linux vimでファイルを開くと(たとえば、vimを使用する)、改行の代わりにfileformats=unix,dos
表示されます。^M
想像できるように、Macでファイルが作成された後にファイル全体を処理した可能性があります。
考慮すべきもう1つの点は、1つの形式でファイルを生成できるかどうかですecho foo >> filename
。ソース形式がMacでLinuxで追加された場合、ファイルに混合形式が含まれます。fileformats
設定が無料であると仮定すると(つまりfileformats=unix,dos,mac
、この場合、vimはMac形式を選択しているようです)。