vim:コマンドライン上のすべてのファイルの構文(ファイル形式)の設定

vim:コマンドライン上のすべてのファイルの構文(ファイル形式)の設定

ファイルを開き、特定のファイル形式を強制するツールがあります。次のパラメータを使用してvimを起動します。

vim -c 'set filetype=foo' [file1 [file2 [...]]

これは次のような場合に便利です。最初のファイルただし、予想通り、これは起動後にファイル形式を一度変更するのと同じであるため、最初のファイルでのみ機能します。コマンドラインの各後続のファイルは、vimのデフォルト/自動検出ファイル形式を選択しますfoo。代わりに、以下を使用してこの問題を解決できました。

vim -c 'au BufRead * set filetype=foo"'

しかし、これは無視されます。みんな後で開くファイルを含むファイル(たとえば、gf名前fooまたは内容でファイルの種類を検出する簡単な経験的な方法はありません。これは状況によって異なります(ヘルプがある場合は通常ディレクトリに制限されますが、ファイルにヒントを追加することはできません)。 )。

指定されたファイルに対してのみデフォルトのファイル形式を設定する方法はありますか?失敗した場合は、1つのセッションの動作をオーバーライドするハッキングなど、かなりきちんとした処理方法があります(たとえば、別のウィンドウでvimを正常に使用できるようにしたい)ftdetect

答え1

原則として、argdo各引数に対してコマンドを実行するアプローチを使用することがbufdo有効です(ここでも機能します)。ボーナスとして、silent面倒な「Enterキーを押してください」というプロンプトが表示されないようにプリセットされています。

  • 簡潔なバージョン

    vim +'sil argdo se ft=foo' file1 file2...
    
  • 長いバージョン

    vim -c 'silent argdo set filetype=foo' file1 file2...
    

実際、後続のファイルでは構文強調は有効になりません(参照:argdoを使用して複数のファイルを開くと、vimで構文ハイライトがオンになりません。)。この問題は次の方法で解決できます。

vim -c 'silent argdo set eventignore-=Syntax | set ft=foo' file1 file2...

しかしチャットで報告このソリューションはすべての人には適していません。 Vimバージョン8.1 p1-2269と8.2 p1-2367で動作します。

関連情報