Подтвердить что ты не робот

VIM: Более точные решения по анализу кода на C/С++?

Pre: Я работаю в VIM уже год. Много замечательных вещей: комбинации, скрипты. Всякий раз, когда я редактирую что-то в другом редакторе, я чувствую себя вялым/неудобным без навигации VIM.

Проблема: То, что действительно беспокоит меня больше всего, - это использование исходного кода с использованием существующих инструментов (ctags, cscope). Часто ctags не могут найти объявление переменной, cscope в отличие от ctags находит все определения с тем же именем переменной. То же безумие с навигацией по дереву вызовов, поиск деклараций и определение одного класса и т.д. По сравнению с MS Intellisense, Visual Assist или даже навигацией по исходному коду в Eclipse Exuberant Tags/cscope, кажется, устарели не менее 10 лет.

Я знаю, что есть такие инструменты, как ViEMU, но они на самом деле не решают проблему, так как вы теряете множество функций VIM.

Вопрос: Мне было интересно, есть ли инструмент, который лучше разбирает исходный код, или есть какой-то способ интегрировать движки синтаксического анализа исходного кода, такие как Intellisense в VIM? Может быть, есть коммерческие решения или есть люди, которые готовы реализовать один?

Все преимущества VIM, похоже, экономят меньше времени, чем теряются при навигации по определению класса, по сравнению с Visual Assist, где это делается одним ярлыком Alt-G.

4b9b3361

Ответ 1

Дерево поиска и вызова

Вы можете попробовать eclim, что является способом использования некоторых функций Eclipse в Vim.

Для C/С++ он обеспечивает:

  • Контекстно-зависимое завершение (хотя оно отключено в Windows, потому что оно ошибочно)
  • Контекстно-зависимый поиск в файлах проекта (через :CSearchContext)
  • Дерево вызовов для функций/методов (:CCallHierarchy)
  • Проверка кода (:Validate)

Это не очень удобно, но в некоторых случаях это может помочь.

Завершение кода

Что касается автоматического завершения кода, я в основном использую OmniCppComplete, в котором используются теги для обеспечения завершения кода контекстного кода. Это не так уж плохо.

Как посоветовал Люк Хермит, вы также можете использовать clang_complete, который не нуждается в ctags, но требует установки clang.

Ответ 2

К сожалению, это настоящая проблема. ctags или cscope вряд ли могут конкурировать с просмотром кода Visual Studio - на самом деле он использует компилятор С++ для анализа кода для редактора.