Генерация геттеров и сеттеров с помощью UltiSnip в Vim

Я хочу создать код UltiSnip, похожий на тот, который используется в их Github README.

Я понимаю, что это включает в себя интерполяцию Python, и мне трудно написать свою собственную интерпретацию. Их документация дает хороший список того, что может сделать UltiSnip, но все еще трудно понять, что я пытаюсь сделать.

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

class Foo()
{
     int x;
     double y;
     ...

и UltiSnip должен добавить эту часть...

     public void setX(int _x)
     {
          this.x = _x;
     }

     public int getX()
     {
          return this.x;
     }

     public void setY(double _y)
     {
          this.y = _y;
     }

     public double getY()
     {
          return this.y;
     }
}

4 ответа

Используйте eclim для этого. Просто выберите атрибуты в визуальном режиме, а затем:JavaGetSet:)

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

Я знаю, что большинство IDE предоставляют такие функциональные возможности "из коробки", но они являются инструментами специального назначения для очень ограниченного набора языков программирования, а не текстовым редактором общего назначения, таким как Vim. Если вы действительно любите эту функциональность, просто используйте IDE по вашему выбору в сочетании с редактированием того же файла исходного кода с помощью Vim. Или используйте упомянутые более простые фрагменты и примите немного больше печатания с вашей стороны.

Привет, у меня есть проблемы с размещением здесь кода с символом `тогда я использовал github: github.com/robertbnd/notes/blob/master/stack

только вам нужно написать "int x" и нажать клавишу, которую вы выбрали в своих фрагментах. Мой случай: let g:UltiSnipsExpandTrigger="`"вы можете персонализировать его

lh-refactor предоставляет методы рефакторинга сгенерировать getter/setter для Java и некоторых других языков.

Соглашения об именах могут быть настроены независимо от внутренних фрагментов.

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