2012-12-20 13 views
6

vimの:sourceコマンドをdos行末のvimscriptファイルで使用すると、^M文字を扱うことができないというエラーが表示されます。vim:sourceが異なる行末を受け入れる方法?

^Mの文字は、dos行の終わりの一部ですが、unix行の終わりではありません。したがって、それは:sourceにファイルをunixファイル形式を使用してしようとしています。

事は、:set fileformats=unix,dosに設定しています。 開封およびのファイル(:source: -ingではない)を編集するときに行末の問題はありません。 Vimは純粋なdos行末でファイルを見て、それに応じてfileformatsごとに調整します。

:help fileformatsはあなたが:set fileformats=unix,dosを持っている場合DOSシステム上で、Vimはそれを使用すべきでアドホック検出を行い(と無関係なディテールとして、この:source検出が異なっよりもより混合行末を扱うことbarest手掛かりを与えます開封ファイル)。

私は現代のMacシステムで、:sourceにはどのようにしてdos行の終了ファイルがありますか?

答えて

6

これは、:h :source_crnlで議論されています。 Mac OS Xを含むUNIXシステムで

は、自動的なCRLF検出、及び実際のCRは、ライン の端部に存在しない 例えば、エラーが発生することができるであろうマッピングにあります。ヘルプから:

他のシステムでは、Vimは ":source"ファイルの末尾が< NL>であると想定しています。これらは常に機能します。 < CR> < NL> < EOL>(たとえば、MS-DOS上で作成されたファイル)のファイルを使用している場合、すべての行に末尾の< CR>が付きます。

最高の互換性を得るには、Vimスクリプトファイルで常にNL改行を使用することをお勧めします。スクリプトの最初の行が何らかの理由でCRで終わらず、'fileformats'が空でない(デフォルトでは空ではない)限り、これらは常にどこでも動作します。

要するに、改行をLFに変換することを検討してください。

+0

この変換を行う簡単な方法は、 ':set ff = unix'を実行してファイルを保存することです。 ...それは ':set ff?'がとにかく 'dos'を返した場合です... –

+1

@ dash-tom-bangまたは、単一のコマンドで、':w ++ ff = unix'です。 – glts

関連する問題