vimでファイルのファイルタイプを判断し、ファイルタイプに基づいて構文の強調表示を設定する方法を探しています。唯一の問題は、ファイルの種類を判断するためにファイル拡張子を使用できないことです。
これが私のシナリオです。私はvimdiff
orgvimdiff
をP4DIFF
ツールとして使用しています。これは、ローカル コピー内のファイルと perforce サーバーからのファイルとの間の変更を表示します。Perforce は、perforce サーバーから /tmp ディレクトリにファイルを取り込み、 を使用しPID
てファイルに名前を付けているようです。次に例を示します。
/tmp/tmp.24673.23
これは C++ ソース ファイル用でした。
perforce リポジトリで最も頻繁に遭遇するファイルの種類は、C/C++ ソースとヘッダー ファイル、Makefile、python スクリプト、perl スクリプト、ruby スクリプト、および tcl スクリプトです。
の使用を検討しましたが
modeline
、ツリー内のほとんどのソースには、この情報がファイルに埋め込まれていません。この投稿では、魔法のパターンを検索して識別するための可能なアプローチについて言及しています。高い成功率が得られる一貫した魔法のパターンは見つかりませんでした。
Linux ボックスでバイナリを使用して、
file
どのような結果が得られるかを確認してみました。C/C++ ソースを適切に識別しているように見えますが、Makefile や Python スクリプト (ハッシュバンを持たない) でさえ失敗します。
良い点の 1 つは、比較される 2 つのファイルのうち、右側のファイルはローカル コピーからのものであり、拡張子付きの正しいファイル名を持っているため、右側のファイルに対して構文の強調表示が正しく有効になっていることです。
これを利用して、左側に表示されているファイルに同じ構文の強調表示を設定する方法はありますか?
この問題に対する別の解決策も歓迎します。