6

:sourcedos 行末を持つ vimscript ファイルでvim のコマンドを使用すると、^M文字を処理できないというエラーが表示されます。

文字は dos の行末の^M一部ですが、UNIX の行末ではありません。:sourceそのため、UNIX ファイル形式を使用してファイルを取得 しようとしています。

問題は、私が:set fileformats=unix,dos設定しているということです。ファイルを開い編集する( :source:-ing ではない) 場合、行末の問題はありません。Vim は、純粋な dos 行末を持つファイルを認識し、fileformatsそれに応じて自分自身を調整します。

:help fileformatsdos システムで を使用している場合:set fileformats=unix,dos、vim はアドホック検出を実行するという最も手がかりを与えるだけです (そして、無関係な詳細として、この検出は、ファイルを開く:source場合とは異なる行末の混合を扱います)。

私は最近の mac システムを使用していますが:source、dos 行末ファイルを取得するにはどうすればよいですか?

4

1 に答える 1

6

これについては、 で説明してい:h :source_crnlます。

Mac OS X を含む UNIX システムでは、CRLF の自動検出は行われず、行末にある実際の CR によって、たとえばマッピングでエラーが発生する 場合があります。ヘルプから:

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

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

つまり、行末を LF に変換することを検討してください。

于 2012-12-20T19:09:54.510 に答える