タグファイルとハイライトオプションを使用して、すべてのシンボルをハイライトしました。
しかし、ローカル変数を強調表示できませんでした。
つまり、VIM は現在のファイルのキーワードのオートコンプリートを既にサポートしており、ローカル変数のオートコンプリートを行うので、現在のファイルのキーワードのリストを取得したら、「ハイライト」を使用してそれらのキーワードを強調表示します。 " vim コマンド。
しかし問題は、現在のファイルのキーワードのリストを取得する方法です。
--c-kinds=+l
タグ ファイルがローカル変数を含むように生成されている限り、タグ ファイルを使用して認識された名前を強調表示できます。ただし、現在、これらの変数のスコープを特定する現実的な方法はありません (ctags は多くの情報を提供しません)。そのため、Vim は関数内の変数と別の関数内の変数を区別しません。
void main(void)
{
int MyVariable; // Highlighted
}
int MyFunction(void)
{
int MyFunctionVariable; // Highlighted
MyVariable = 1; // Syntax error, but still highlighted
}
これは、C ファイルをもう少し詳細に解析し、各関数の構文領域を作成することで実行できますが、簡単ではありません (また、Vim はオーバーラップ領域をサポートしていないため、 rainbow.vimなどのプラグインとは互換性がありません)。
関連するメモとして、こちらから入手できる私のタグ強調表示プラグインにも興味があるかもしれません。ローカル変数を強調表示します (実行時にバッファ オープンでb:TypesFileIncludeLocals
が設定されている場合) が、ローカル変数のスコープは扱いません。ただし、 で提案されているハイライトよりもはるかに多くのハイライト カラー バリエーションを提供します。配色を最大限に活用するには、多くの追加グループ ( 、など) に対してハイライトを定義する必要があることに注意してください。1
:UpdateTypesFile
:help tag-highlight
GlobalVariable
LocalVariable
DefinedName