Полнофункциональное завершение Vim для Java

Я прочитал кучу блогов о предположительно отличном многофункциональном средстве Vim, и все же, что бы я ни делал, я не могу заставить его работать удовлетворительно. Мне потребовалась целая вечность, чтобы понять, что версия ctags, предустановленная в моей системе, была версией emacs и не имела опции --recurse, но теперь, когда я запустил ctags-exuberant на своей копии OpenJDK sources, чтобы попытаться запустить какое-либо завершение кода, Vim зависает всякий раз, когда я пытаюсь вызвать его с помощью [Cn] или [Cp].

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

Может ли кто-нибудь предложить более простой способ заставить какое-то автодополнение кода работать в Vim, которое действительно работает?


person Robbie    schedule 21.10.2009    source источник


Ответы (4)


Вот функция "JDE" для vim: http://www.vim.org/scripts/script.php?script_id=1213 Один из перечисленных функций - «Завершение кода (работает для java и jsp, taglib, html, xml, xsl, xsd) (требуется VIM 7.0)»

А вот сценарий автозаполнения Java: http://vim.sourceforge.net/scripts/script.php?script_id=1785

Это не Java, но я нашел его довольно ясным и понятным; возможно, стоит прочитать. Вот рецепт по настройке автодополнения для Drupal. Пользовательский сценарий AWK создает словарь автозаполнения для vim. http://www.thingy-ma-jig.co.uk/blog/18-08-2009/drupal-autocomplete-vim

Удачи.

person steveha    schedule 23.10.2009
comment
Спасибо за ваши предложения. Вы сами пробовали JDE и javacomplete? Каковы ваши предпочтения? Я пробовал javacomplete, но он у меня не всегда работает (не вникал почему). Пойду смотреть JDE! - person Hannes; 15.06.2011

Я попробовал эклим:

http://eclim.sourceforge.net/

Некоторое время назад он в основном запускал eclipse в фоновом режиме, а затем предоставлял плагин vim, который позволяет вам получить все функциональные возможности eclipse внутри vim. Таким образом, вы можете выполнять рефакторинг, завершение и т. д. Кажется, это работает довольно хорошо, если вы не возражаете против запуска огромного процесса затмения в фоновом режиме в вашей системе.

У меня есть завершение, работающее довольно хорошо на С++ (в любом случае лучше, чем Vis stud), но мне никогда не везло с java. В настоящее время я обычно использую eclipse большую часть времени, но у меня есть gvim --remote, настроенная как внешняя команда в eclipse, так что я могу просто стереть текущий буфер в vim в любое время, когда захочу.

person Benj    schedule 29.10.2009
comment
Кстати, в последнем абзаце речь шла о встроенном в vim омни-завершении, а не о eclim. - person Benj; 29.10.2009

У меня было такое же желание, и оно было реализовано с помощью eclim. Работает действительно очень хорошо.

person tr9sh    schedule 25.10.2009

Я искал это, а также рассматриваю возможность перехода от eclipse к vim. Лучшее решение, которое я нашел до сих пор, — это привести vim к затмению с помощью vrapper( http://vrapper.sourceforge.net/ ). Он привносит в редактор eclipse множество функций vim, и вы по-прежнему можете использовать автозаполнение и все другие функции Eclipse.

Я все еще заинтересован в полном перемещении, но мне кажется трудным превзойти eclipse для среды разработки Java. (просто ненавижу накладные расходы на затмение!)

person Patrick    schedule 18.10.2012
comment
Подсказка: vrapper имеет завершение [C-p]. Вам просто нужно отключить команду печати (двойной CTRL+SHIFT+L, поиск CTRL+P). Кому вообще нужно печатать код? - person Dacav; 09.12.2014
comment
В общем, я заметил, что вы можете получить очень похожее на vim поведение, избавившись от привязок клавиш по умолчанию, которые имеют приоритет над теми, которые определены vrapper. - person Dacav; 09.12.2014