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

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

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

Как я могу это настроить?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
4 484
4

Ответы 4

  • Вы можете указать 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
    

Это переименование по токену (как это предусмотрено всеми современными IDE)? Или это поиск / замена тупой строки, которая может нанести ущерб другим именам и частям текста?

bloody 05.04.2020 19:39

@bloody, Vim - это не IDE. Он ничего не знает о вашем коде, поэтому нет никаких причин ожидать уровня интеллекта IDE. Тем не менее, флаг /c запрашивает у пользователя подтверждение, поэтому, если вы обратите внимание на то, что делаете, вы не сильно рискуете.

romainl 06.04.2020 09:04

Спасибо за ответ. После нашего обмена я понял, что :grep -w foo paths лучше вообще переименовать. Это не похоже на переименование IDE, но оно, по крайней мере, не будет включать подстроки из более длинных имен, что, возможно, сэкономит время на проверку. Наверняка ближе к "настоящему" переименованию.

bloody 10.04.2020 01:58

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

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

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

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

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

Пожалуйста, Возьмите тур, и обязательно с вашим ссылка для ответа. Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. как ответить

Agilanbu 22.04.2019 11:42

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

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

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

Другие вопросы по теме