Это зависит от ctags. В некоторых языках невозможно извлечь локальные переменные (viml), в других языках он не обнаруживает все локальные переменные (C ++). Следовательно, первое, что вам нужно сделать, это посмотреть, что ctags может сделать для вашего языка (Maple).
Другая сложность состоит в том, чтобы ограничить выделение одной конкретной функцией и сохранять синхронизацию каждый раз, когда в отредактированный файл вставляются новые строки. Я не знаю простого способа сделать это - может быть, с синтаксической областью vim, которая начинается с local.*{global-name}
и заканчивается на end proc
для нейтрализации выделения всех глобальных переменных?
Одной задачей, которая будет намного проще, будет выделение маскирования переменных, то есть выделение global_var2
в той точке функции, где она объявлена локальной. Увы, это не то, что вы ищете.