Автодополнение C / C ++ в vim

Автозаполнение является отличной возможностью для программистов, которые работают на различных типах языков программирования, таких как языки C / C ++. Редактор Vim предоставляет эту функцию под Windows или Linux . Автозаполнение C / C ++ в Vim ищет слова, набранные в файле, в котором ранее были сохранены его теги . Пользователь с помощью аппаратного компонента системы, то есть клавиатуры, настроит клавишу для запуска процесса просмотра сохраненных тегов. Однако было бы разумно следить за любыми словами, которые не имеют смысла.

  • Монтаж
  • конфигурация
  • использование
  • связи

Это руководство предназначено для людей, использующих Vim в Linux. Автозаполнение - это привычная функция для пользователей Linux, однако иногда она может предлагать слова, которые не имеют смысла в контексте. Это может быть неприятно при программировании, поскольку Auto-complete может предложить, например, тип, когда метод ожидается в этой точке кода.

 class plop () {protected: int plopons; public: plop () {} void plopez () {}}; int main () {plop p; п. // <- Ctrl P наследование предложения: plopez, plop ... alors que c'est forcément plopons return 0; } 

Плагин, основанный на ctags Vim, позволяет создавать более интеллектуальные автозаполнения, которые могут учитывать контекст, в котором используется слово.

Монтаж

Начнем с установки ctags. Например, в дистрибутивах Debian или Debian (ubuntu, xandros и т. Д.):

 Обновление sudo aptitude Безопасное обновление sudo aptitude Установка sudo aptitude exuberant-ctags 

Он также восстанавливает плагин Vim для автозаполнения:

//www.vim.org/scripts/script.php?script_id=1520

Мы сделаем все, что касается самостоятельного заполнения в ~ /. Vim:

 mkdir -p ~ / .vim / tags mv omnicpp * zip ~ / .vim cd ~ / .vim распаковать omnicpp * zip cd - 

Ctags умеет рассматривать проблему заголовков QT, OpenGL, SDL. Однако для STL вы должны извлечь заголовки «просто» здесь:

//www.vim.org/scripts/script.php?script_id=2358

Распаковывает архив и создает теги из STL:

 tar xjvf cpp_src.tar.bz2 ctags -R --c ++ - types = + p - поля = + iaS --extra = + q --language-force = C ++ cpp_src && mv tags ~ / .vim / tags / stl 

Теперь он генерирует теги для установленных библиотек (для адаптации, если библиотеки установлены в другом месте). Например, в библиотеках OpenGL, SDL и QT просто введите следующие три команды:

с

 теги -R --c ++ - виды = + p - поля = + iaS --extra = + q --language-force = C ++ / usr / include / GL / && mv теги ~ / .vim / tags / gl ctags - R --c ++ - types = + p --fields = + iaS --extra = + q --language-force = C ++ / usr / include / SDL / && mv tags ~ / .vim / tags / sdl ctags -R - -c ++ - types = + p --fields = + iaS --extra = + q --language-force = C ++ / usr / include / qt4 / && mv tags ~ / .vim / tags / qt4 

конфигурация

Теперь мы должны сказать vim загрузить файлы плагинов и различные теги. Для этого просто добавьте в конец файла ~ /. Vimrc следующие строки:

 «Плагин тегов prérequis set nocp» включает теги: добавьте дополнительные теги или закомментируйте неиспользуемые, установите теги + = ~ / .vim / tags / stl установите теги + = ~ / .vim / tags / gl установите теги + = ~ / .vim / tags / sdl установить теги + = ~ / .vim / tags / qt4 "построить теги вашего собственного проекта с помощью CTRL + F12" map:! ctags -R --c ++ - types = + p --fields = + iaS - -экстра = + д. noremap:! ctags -R --c ++ - types = + p --fields = + iaS --extra = + q. inoremap:! ctags -R --c ++ - types = + p --fields = + iaS --extra = + q. "OmniCppComplete пусть OmniCpp_NamespaceSearch = 1 пусть OmniCpp_GlobalScopeSearch = 1 пусть OmniCpp_ShowAccess = 1 пусть OmniCpp_MayCompleteDot = 1 пусть OmniCpp_MayCompleteArrow = 1 пусть OmniCpp_MayCompleteScope = 1 Пусть OmniCpp_DefaultNamespaces = [" станд " "_GLIBCXX_STD"]" автоматически открывать и закрывать всплывающее меню / окно предварительного просмотра а.е. CursorMovedI, InsertLeave * если pumvisible () == 0 | молчать! pclose | endif set completeopt = menuone, меню, самый длинный, предварительный просмотр 

Если теги были сгенерированы только для некоторых файлов, оставьте комментарий для другого, добавив в начало строки. Например, если мы не сгенерировали ~ /.vim/tags/gl и ~ / .vim / tags / sdl:

 установить теги + = ~ / .vim / tags / stl "установить теги + = ~ / .vim / tags / gl" установить теги + = ~ / .vim / tags / sdl установить теги + = ~ / .vim / tags / qt4 

Нам просто нужно сохранить файл и (пере) запустить vim, чтобы они отражали изменения в ~ /. Vimrc.

использование

Все, что было ранее помечено (т. Е. В этом уроке теги STL, QT, SDL и OpenGL), уже доступно для автозаполнения. Просто нажмите Ctrl P или N. Как только список появится, вы можете использовать стрелки, чтобы выделить хорошее предложение и нажать Enter.

Однако, это не полностью закончено. Он должен восстановить теги символов (переменных, функций, типов ...), характерных для разрабатываемого проекта. Это еще раз сгенерирует файл тегов. И, конечно, он будет обновлять файл каждый раз, когда вы добавляете, удаляете или изменяете символ проекта, чтобы он был текущим.

Как правило, рекомендуется назначить клавишу на клавиатуре для запуска процесса ctags. В файле примера ~ / .Vimrc, который я дал, это подтверждается нажатием клавиши F12.

связи

//vim.wikia.com/wiki/C++_code_completion

//www.vim.org/scripts/script.php?script_id=1520

//www.vim.org/scripts/script.php?script_id=2358

Предыдущая статья Следующая статья

Лучшие советы