Рефакторинг C/C++ в Vim (например, извлечение метода как в Eclipse)

Есть ли какие-либо плагины или встроенные методы в Vim для выполнения рефакторинга на C или коде C++, чем-то как инструменты рефакторинга в Eclipse?

Я особенно увлечен инструментом рефакторинга метода извлечения от Eclipse, который определит параметры из новых методов и обычно также предполагать переменную для использования в качестве возвращаемого значения.

29
задан user39275 22 October 2014 в 21:16
поделиться

1 ответ

Нет, хотя Vim является хорошей средой для редактирования и может быть настроен множеством способов (сворачивание кода, раскраска синтаксиса, расширение макроса и т. Д.), Большинство из них выполняется на уровне синтаксиса, а не на семантическом уровне. . Даже сворачивание кода просто соответствует противоположным скобкам.

Чтобы провести правильный рефакторинг, вы должны хорошо разбираться в семантике AST, какие переменные объявлены в какой области и так далее. IDE, такие как Eclipse, создают кеш переменных, определенных в каждой лексической области видимости, чтобы они могли быстро вернуться к тому, где они используются, с точки зрения определения того, что и где переименовывать.

Это не значит, что вы не можете делать некоторые вещи синтаксически; в конце концов, достаточно легко вынуть блок кода и поместить его в отдельную функцию. Возможно, вы даже сможете угадать некоторые параметры (например, найти список переменных, выяснить, какие из них имеют локальные объявления, удалить их, а то, что осталось, - это ваши параметры. Но Eclipse также делает другие вещи - например, выясняет, являются ли какие-либо переменные изменяются в функции и гарантируют, что они передаются обратно возвращаемым значением. Он также проверяет любые выданные исключения и добавляет их в список.

В конечном итоге вы можете приблизительно оценить некоторые из них. в Vim вы действительно не сможете заставить это работать в среде только для Vim. Вы можете либо использовать привязку клавиш, подобную Vim, в самом Eclipse, либо посмотреть на eclim . Из дома page:

Основная цель eclim - добавить функциональность Eclipse в редактор Vim .Первоначальной целью было предоставить Java-функциональность Eclipse в vim, но поддерживать различные другие языки (c / c ++, php, python, ruby, css , html, xml и т. д.) были добавлены и планируется еще несколько.

Eclim - это не столько приложение, сколько интеграция двух великих проектов. Первый, Vim, возможно, один из лучших текстовых редакторов . Второй, Eclipse, предоставляет множество отличных инструментов для разработки на различных языках. Каждый предоставляет множество функций, которые могут повысить продуктивность разработчика, но оба по-прежнему оставляют желать лучшего . Vim не имеет встроенной поддержки Java и многих дополнительных функций , доступных в Eclipse. Eclipse, с другой стороны, по-прежнему требует использования мыши для многих вещей, а когда по сравнению с Vim, предоставляет менее идеальный интерфейс. для редактирования текста.

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

Это не только дает среду, подобную Eclipse, это Eclipse. Но вы по-прежнему получаете функции навигации и редактирования текста vim. Похоже, это может удовлетворить ваши потребности, хотя документация по поддержке рефакторинга не указывает, что она предоставляет функциональные возможности метода извлечения.

16
ответ дан 28 November 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: