web-dev-qa-db-ja.com

vimで新しいファイルの言語を検出します(構文の強調表示を更新します)

ファイルを開くたびに、vimは一連のチェックを実行してファイルの言語を判別し、関連する構文の強調表示を適用します。最初にファイル拡張子を確認し、次にファイル自体の内部を調べます。ここでは何も新しいことはありません。

ファイル拡張子を含む新しいファイルを作成する場合(例:test.sql、vimは、入力したものすべてに対してSQL構文を自動的に強調表示します。ここでも新しいことは何もありません。

ただし、ファイル拡張子を付けずにシバンを含む新しいファイルを作成する場合(例:#!/usr/bin/env python、vimがチェックを適用し、これがpythonスクリプトであると判断するには、ファイルを保存して再度開く必要があるようです。

私の質問は、これらのチェックをトリガーするvimコマンドがあり、新しい(拡張子のない)ファイルの強調表示を更新できるようにして、ファイルを再度開く必要がないかどうかです。

syntax-loading に関するvimのドキュメントを見て、クエリに関して何か役立つものが見つかると思いましたが、残念ながらそうではありませんでした。

3
Javier Arias

これを行うことができる3つの異なる方法があります:

  • :set ft=python。このアプローチの欠点は、1つのファイルタイプ(この例ではpython)でのみ機能するため、キーボードショートカットに追加できないことです。
  • :w + :eこれの欠点は、コマンドを実行する前にファイルを再ロードするため、ファイルを保存する必要があることです。
  • :filetype detectこれは入力するのに時間がかかります。

2番目または3番目のオプションをmap <C-r> :filetype detect<CR>のショートカットとして.vimrcに追加して、ctrl + rでファイルを更新できるようにすることができます。

5
KNejad