Интеграция Vim Cmake - PullRequest
       96

Интеграция Vim Cmake

0 голосов
/ 31 августа 2018

У меня есть проект cmake. Я хочу легко сделать следующее

  • поиск объявления, определения и ссылок любой переменной, функции и т. Д. Под курсором, который может быть объявлен во внешнем заголовочном файле, путь которого добавляется с использованием INCLUDE_DIRECTORIES в CMakeLists.txt
  • переименование переменной, функции и т. Д., Объявленных в проекте

Как мне это настроить?

Ответы [ 4 ]

0 голосов
/ 22 апреля 2019

Я использую функции в vim и назначаю их горячей клавише.

https://developer.ibm.com/tutorials/l-vim-script-2/

это дает вам ощущение IDE. но в конце дня вы получаете немного больше контроля.

0 голосов
/ 13 марта 2019

Вы можете попробовать использовать плагин vim cmake4vim для интеграции CMake с Vim. Этот плагин помогает работать с целями cmake и позволяет генерировать файл базы данных компиляции ( compile_commands.json ). Многие плагины используют этот файл для завершения кода, перехода к определению и т. Д. (Например, YCM )

Также вы можете использовать плагины vim lsp (например, vim-lsp ). Эти плагины используют языковые серверы для автозавершения кода, рефакторинга и других полезных функций.

Но интеграция проекта CMake (генерация кэша cmake, компиляция проекта и т. Д.) И поиск декларации, определения и т. Д. - разные задачи. И различные плагины и инструменты решают эти задачи.

0 голосов
/ 22 апреля 2019

YouCompleteMe поможет вам. Он использует compilation_database.json, который может быть сгенерирован cmake.

Этот плагин также обеспечивает автозаполнение для многих языков.

0 голосов
/ 31 августа 2018
  • Вы можете указать Vim, где искать включения, добавив записи в параметр path. У меня недостаточно опыта работы с Cmake, чтобы знать, как получить пути из CMakeLists.txt.

    См. :help 'path'.

  • При условии правильной установки path можно использовать встроенные :dsearch и связанные с ними команды для поиска определений по всем включениям.

    Параметр define имеет предписывающее имя, но его можно использовать для поиска любого конкретного шаблона, чтобы вы могли изменить его так же, чтобы он соответствовал объявлениям или даже чему угодно.

    См. :help include-search и :help 'define'.

  • Vim не имеет встроенного понятия «ссылка». :isearch и друзья должны работать на это, но они, вероятно, будут слишком шумными.

  • Переименование обычно выполняется с помощью чего-то вроде:

    :grep foo paths
    :cwindow
    :cdo s/foo/bar/gc
    
...