Vim は、何を投げても文句を言わずに意味を理解しようと懸命に努力します。これにより、file
の診断に使用するツールとしては比較的貧弱です。 の出力。
Vim の「[converted]」通知は、ロケール設定 (LANG など) によって提案されたテキスト エンコーディングで vim が予期しない何かがファイルにあったことを示しています。
他の人がすでに提案しています
cat -v
xxd
非 ASCII 文字の grep を試すことができます。
grep -P '[\x7f-\xff]' filename
他の可能性は、プラットフォームの非標準の行末 (つまり、CRLF または CR) ですが、 file
を期待します それに対処し、「DOS テキスト ファイル」などを報告します。
file -D filename
を実行すると 、 file
実行するテストを含むデバッグ情報を表示します。終わり近くで、ファイルの種類を決定する際に成功したテストが表示されます。
通常のテキスト ファイルの場合、次のようになります:
[31> 0 regex,=^package[ \t]+[0-9A-Za-z_:]+ *;,""]
1 == 0 = 0
ascmagic 1
filename.txt: ISO-8859 text, with CRLF line terminators
これにより、その MIME タイプであると判断するために何が見つかったかがわかります。
問題のある行を見つけるために二分探索を使用して問題を見つけました。
head -n {1/2 line count} file.cpp > a.txt
tail -n {1/2 line count} file.cpp > b.txt
file
を実行中 各半分に対して、プロセスを繰り返すと、問題のある行を見つけるのに役立ちました. コントロールを見つけました +P (^P
) 文字が埋め込まれています。それを削除すると、問題は解決しました。今後、これらの文字 (およびその他の拡張文字) を検索する Perl スクリプトを自分で作成します。
すべてのヒントに答えてくれたすべての人に感謝します!