С помощью universal-ctags, если вы использовали правильные параметры, вы всегда можете получить члены типа класса / структуры.
Если вы читаете между строк, это означает, что нет эффективного способа сделать это с переменной C ++, если вы придерживаетесь vimscript. Я пробовал сделать это , но в конце концов отказался от этого пути; путь, который не поддерживает auto
.
Теперь я начал использовать (/ реализовывать) другой подход для анализа кода C ++ и использования информации из vim: я полагаюсь на libclang. Загвоздка в том, что он должен работать с текущей единицей перевода (TU), и если TU длинный (например, если он включает много длинных файлов), требуется время, чтобы проанализировать его в первый раз с момента последнего изменения. (Я ожидаю, что решение изменится с модулями C ++ 20) - анализ выполняется по запросу, а не в фоновом режиме. Примечание: мой плагин в настоящее время находится в разработке, и я еще не предоставил функцию Vim высокого уровня, которая возвращает тип переменной и связанную с ней информацию (тип, члены, возможные значения перечисления ...)
Если вашей конечной целью является пополнение членов, инструменты на основе clang предоставляют для этой цели специальный API, который будет более эффективным, чем полный анализ текущего TU. Плагины, которые вы не используете sh для использования, используют этот API. Серверы LSP даже пытаются кэшировать как можно больше информации (только для целей навигации и завершения).
Обратите внимание, что существует несколько плагинов, таких как tagbar , которые пытаются организовать информацию, извлеченную с помощью ctags и представьте его в виде иерархии c. Обратите внимание, что это не поможет ни с устранением неоднозначности, ни с auto
.