Советы по использованию Vim в качестве Java IDE? [закрыто]

195

Я зависим от Vim, теперь это мой де-факто способ редактирования текстовых файлов.

Учитывая, что это в основном текстовый редактор, а не IDE, есть ли у меня какие-то хитрости, чтобы упростить разработку приложений Java?

У меня есть несколько вопросов:

  • Как вызвать задачу maven, не выходя из vi?
  • Могу ли я получить завершение кода?
  • Как подсветка синтаксиса?

Что-нибудь еще (кроме «Не делай этого!»), О котором я должен знать?

Аллен Лалонд
источник
1
Я интенсивно использую NetBeans на работе, но для своего персонального сервера дома ... использование NetBeans не работает должным образом, так как мне пришлось бы заниматься разработкой на другом компьютере, а затем развертывать. Туда и обратно слишком долго.
Аллен Лалонд
1
@AdamC Входящий от Google здесь ... Как самопровозглашенный фанат командной строки, пришедший из python, я думаю, что барьер для входа в настройку среды разработки Java значительно повышен необходимостью таких программ. Я уже должен установить JVM ... почему нужно сделать даже БОЛЬШЕ установки, чтобы получить привет! Это просто общий характер, который люди, пришедшие из языков сценариев, будут иметь при первом изучении Java.
DeaconDesperado
2
Когда я редактирую в VIM. Чтобы вернуться в консоль, вы можете просто нажать Ctrl + Z, который поместит vim в фоновый режим и вернет вас в консоль. Затем вы можете использовать команду fg, чтобы вернуть vim на передний план
Мэтью Киркли,
Вы не должны Ctrl =
fuzzyTew
3
Вам не нужно ctrl + z / fg .. просто введите:! Command и 'command' будет запущен. Если вам нужна быстрая оболочка, введите:! Bash. затем, если вы выходите, вы возвращаетесь в vim, а не оставляете висячую фоновую работу. Вы можете получить оболочку в окне vim с плагинами.
fuzzyTew

Ответы:

75

Несколько советов:

  • Убедитесь, что вы используете vim (vi улучшено). Linux и некоторые версии UNIX символической ссылки vi на vim.
  • Вы можете получить завершение кода с помощью eclim
  • Или вы можете получить функциональность vi в Eclipse с помощью viPlugin
  • Подсветка синтаксиса великолепна с vim
  • Vim имеет хорошую поддержку для написания небольших макросов, таких как запуск сборок ant / maven

Радоваться, веселиться :-)

Инструментарий
источник
7
Команда для получения справки по выделению синтаксиса Java. : help java.vim
Майкл Экока
2
Еще один способ получить функциональность Vim в Eclipse - это Vrapper . Он имеет большую часть привязок клавиш Vim и в отличие от viPlugin он бесплатный.
n1te
1
Как насчет отладчика, который поддерживает пошаговый, пошаговый и т. Д.?
Донато
1
Linux ... символическая ссылка vi на vim Контрпример: Arch Linux
johnchen902
30

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

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

Также совет:

:set path=**
:chdir your/project/root

Это делает ^wfдля имени класса очень хорошую функцию для навигации по большому проекту.

Так или иначе, то есть то, что, когда мне нужно добавить много нового кода, Vim, кажется, замедляет меня просто из-за времени, потраченного на поиски проблем компиляции и тому подобного. Когда мне нужно найти и отредактировать конкретные источники, Eclipse чувствует себя как кувалда. Я все еще жду волшебную IDE для Vim. Было три основных попытки, о которых я знаю. Есть чистый плагин типа IDE viml, который добавляет множество функций, но кажется невозможным для использования. Есть эклим, с которым у меня было много проблем. И есть плагин для Eclipse, который фактически встраивает Vim. Последний вариант кажется наиболее многообещающим для реальной серьезной работы Java EE, но, похоже, он работает не очень хорошо или действительно не интегрирует все функции Eclipse со встроенным Vim.

Такие вещи, как добавление отсутствующего импорта нажатием клавиши, неправильный код с ошибками ввода и т. Д., Кажутся неоценимыми из вашей среды IDE при работе над большим проектом Java.

Арджан Тиймс
источник
5
проголосуй за "^ wf" Я не знал, что такое есть в vim :)
Кшиштоф Красонь
4
Можете ли вы объяснить больше о ^ WF? что оно делает?
user2427
1
Он открывает файл / класс java (расширение имени файла .javaне требуется) под курсором в новом разделенном окне, если он может найти файл. Вот почему :set path=**полезно.
Exic
Так что ** буквально две звездочки?
Тако
1
@lijat :help ^wf- так же, как другие vim help
JESii
22
  • Как вызвать задачу maven, не выходя из vi?

    Maven ничем не отличается от любой другой команды оболочки:

    :!mvn

    Вы можете, :set makeprg=mvnесли у вас уже есть любимое сопоставление клавиш для :make.

  • Могу ли я получить завершение кода?

    Да, eclim - это здорово, это мост между эффективностью редактирования в vim и пониманием языка Eclipse в Java.

    <C-n>и <C-p>не такие уж и хорошие, но удивительно полезные.

  • Как подсветка синтаксиса?

    Более чем достаточно для маркера на основе регулярных выражений.

Возможно, вы захотите рассмотреть инструменты для других целей vim + java, таких как шаблоны кода ( snippetEmu - фрагменты по умолчанию отстой, но настраиваемость блестит), поиск использования и переход к объявлениям (eclim, grep, ctags), генерация методов получения и установки ( java_getset , или eclim), автоматический импорт (eclim). Вам также может понадобиться Java-оболочка для быстрых экспериментов ( BeanShell , он же bsh).

СПП
источник
1
спасибо за совет BeanShell, я не знал об этом инструменте
GoingTharn
8

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

https://github.com/mikelue/vim-maven-plugin

https://github.com/vim-scripts/maven-ide

РЕДАКТИРОВАТЬ: О, кстати, я пробовал eclim время от времени, но причина, по которой я люблю vim, это его легкость. Выполнение затмения даже в безголовом режиме - это слишком много для меня.

РЕДАКТИРОВАТЬ 2: Я недавно использовал playframework, и это, вероятно, будет работать и со сборками maven:

  • Для компиляции вы можете сконфигурировать VIM make для запуска maven или, в моем случае, запустить скрипт сборки, то есть передать в файл.

    autocmd Filetype java setl makeprg=play_compile
    autocmd Filetype java setl efm=%A\ %#[error]\ %f:%l:\ %m,%-Z\ %#[error]\ %p^,%-C%.%#

"play_compile" - это просто скрипт компиляции. Он использует SBT, поэтому Maven должен отлично работать здесь. Даже прямой javac будет работать. Таким образом, вы можете использовать буфер быстрого исправления VIM (: cnext,: clist: cprev и т. Д.).

  • Для прыжков по классам я использую ctrl-p . Это прекрасно. Используй это. Быстрее, чем затмение в прыжках вокруг файлов.

  • Для прыжков по методам я использую tagsearch с обильными c-тегами. Перейдите в объявления методов с помощью ctrl-]. Вернитесь, используя Ctrl-o. Не работает так же хорошо, как затмение, но работает достаточно хорошо.

  • Я использую supertab для завершения кода. Javacomplete довольно медленный, поэтому я придерживаюсь omni-complete. Опять же, не так точно, как затмение, но оно быстрое и работает достаточно хорошо для меня.

critium
источник
5

Используйте Vim. ^ - ^ (если быть точным, gVim)

Вы будете иметь все это (с некоторыми плагинами).

Кстати, snippetsEmu - хороший инструмент для кодирования с полезными фрагментами (как в TextMate). Вы можете использовать (или модифицировать) готовый пакет или сделать свой собственный.

Berzemus
источник