LINUX.ORG.RU

[java][vim] настройка

 ,


1

2

Здравствуйте!
Реально ли работать с java проектами в vim? Настраиваю тут его, поставил всякие omnicomplete, taglist, vjde и тд.
Пока что не очень радует autocomplete.
И такой вопрос: как импортировать в vim проект из netbeans?
Т.е. чтобы он он подцепил сам проект, плюс к нему импортировать вспомогательный проект (пакеты которого используются), плюс все зависимости? И можно ли потом будет а-ля Нетбинз - нажимаю, например, F5 - он собирает весь проект, запускает tomcat, и запускает мой проект?
И как с отладкой java-приложений в vim?

★★★★★

Мсье знает толк в извращениях. Я конечно последний раз вим использовал очень давно, но мне всегда казалось - что это текстовый редактор, пусть и навороченный, но не IDE.

roy ★★★★★
()
Ответ на: комментарий от roy

Ну сам для java-проектов сейчас использую NetBeans. Вот хотелось узнать, можно ли ее заменить vim'ом или все-таки не получится сделать годную IDE?

kovrik ★★★★★
() автор топика

>Т.е. чтобы он он подцепил сам проект, плюс к нему импортировать вспомогательный проект (пакеты которого используются), плюс все зависимости? И можно ли потом будет а-ля Нетбинз - нажимаю, например, F5 - он собирает весь проект, запускает tomcat, и запускает мой проект?

можно. Но только для C/C++ путь знаю.

на остальные вопросы ответ - ищите плагины.

вот ещё книжку перевели: http://rus-linux.net/MyLDP/BOOKS/Vim/prosto-o-vim-01.html

drBatty ★★
()
Ответ на: комментарий от drBatty

Книжку скачал (это и сподвигло на «попробовать заменить NetBeans Vim"ом»), нужных плагинов пока не нашел (только разве что плагин Ant для сборки). Пока что даже не знаю как импортировать готовый проект из исходников - только по 1 файлу выбирать.

kovrik ★★★★★
() автор топика

Реально ли работать с java проектами в vim?

У меня не получилось. Пробовал и eclim и vjde. Какое-то оно кривое все и дурное.

baverman ★★★
()
Ответ на: комментарий от kovrik

>даже не знаю как импортировать готовый проект из исходников - только по 1 файлу выбирать.

наверное вам нужно :mksession

drBatty ★★
()

> Реально ли работать с java проектами в vim?

Да.

И такой вопрос:

На все вопросы такого рода ответ - никак. Вим только для редактирования файлов, всё остальное - внешними утилитами.

:h make :h tags

и далее по ссылкам.

LamerOk ★★★★★
()

Реально ли работать с java проектами в vim?

С хеллоувордами на 10 классов - еще можно. Больше - уже через ж.

И можно ли потом будет а-ля Нетбинз - нажимаю, например, F5 - он собирает весь проект, запускает tomcat, и запускает мой проект?

Можно сделать мэйвеновский проект и запускать его по F5.

И как с отладкой java-приложений в vim?

Никак.

Но вообще все это редкостный махохизм. Чем netbeans/eclipse/idea не устраивает?

Nagwal ★★★★
()
Ответ на: комментарий от drBatty

Vim становится IDE после установки плагинов? Какие плагины нужно поставить, чтобы можно было для проекта на Java:

  • Открыть файл соответствующего класса (открыть файл для класса App, например)
  • Построить иерархию классов, вверх и вниз
  • Найти все места, где используется данный класс/метод/переменная
  • Рефакторинг имени класса/метода/переменной, перемещение класса в другой пакет, экспорт внутреннего класса
  • Сгенерировать геттеры/сеттеры/конструктор
  • Автоматическая генерация кода, например syso+ctrl+space = System.out.println()
  • Подсказки и автоматическое исправление ошибок: добавление необходимых импортов, изменение области видимости
  • Отладка с перемещением по коду
  • Отображение ошибок компиляции и предупреждений в редакторе
  • Сравнение разных версий файла в VCS, update/commit/merge
roy ★★★★★
()
Ответ на: комментарий от roy

ну вот здесь много полезного: http://rus-linux.net/MyLDP/BOOKS/Vim/prosto-o-vim-17.html

Правда в полном объёме лично у меня это всё работает только для С/С++. Для явы не знаю. Вроде синтаксис похожий... Просто - не знаю.

ЗЫЖ с такими требованиями вам ИМХО и гуёвый не найти будет :) В смысле, если удовлетворить их _полностью_. Например не просто VCS, а DVCS Mercurial & Git + просмотр, поиск, и прочее и прочее. В том числе трёхпроходовое слияние:

1. что было
2. что изменил кодер №1
3. что изменил кодер №2

Vim такое легко делает.

ЗЗЫЖ и спокойней пожалуйста, я ваш любимый IDE удолять не собираюсь :)

drBatty ★★
()
Ответ на: комментарий от dismal_faun

>ОПЕРАТИВА

неа.
Мой Vim увешаный Over9000 плагинов + маленький проектик в 20К строчек жрёт ненамного меньше гуя. Скорость достигается тем, что
1. все вещи на хоткеях, и время их набора <1S
2. мыш не нужна
3. всё в одном

drBatty ★★
()
Ответ на: комментарий от drBatty

ненене. я имел ввиду что нетбинсы/еклипсы сжирают оперативу в значительно более ощутимой степени чем тормозят своим жаба-гуем. кеды/гном/юнити, пара браузеров с несколькими вкладками, текучий через модпхп апачик, один нетбинс и всё, нету 4гигов оперативы. но в жаба-иде всё просто и по мышетыкерски понятно, а к виму привыкать надо...

dismal_faun ★★
()
Ответ на: комментарий от roy

> Какие плагины нужно поставить, чтобы можно было для проекта на Java:


Открыть файл соответствующего класса (открыть файл для класса App, например)


Встроено. :h tags/:h scope

Найти все места, где используется данный класс/метод/переменная


Встроено. :h scope

Рефакторинг имени класса/метода/переменной,


Встроено. :h scope + :h *

Сгенерировать геттеры/сеттеры/конструктор


Для явы надо погуглить, если лень писать скрипт самому.

Автоматическая генерация кода, например syso+ctrl+space = System.out.println()


Встроено. :h ab / :h map


Отображение ошибок компиляции и предупреждений в редакторе


Встроено. :h quickfix

Сравнение разных версий файла в VCS, update/commit/merge


Зависит от VCS. Для нормальных, типа git, ничего не нужно, всё встроено.


Вот для этого не знаю:

Построить иерархию классов, вверх и вниз

перемещение класса в другой пакет, экспорт внутреннего класса


Подсказки и автоматическое исправление ошибок: добавление необходимых импортов, изменение области видимости


Отладка с перемещением по коду

LamerOk ★★★★★
()
Ответ на: комментарий от dismal_faun

>ненене. я имел ввиду что нетбинсы/еклипсы сжирают оперативу в значительно более ощутимой степени чем тормозят своим жаба-гуем.

ну вообще да - жабагуи память жрут. Тут я согласен.

но в жаба-иде всё просто и по мышетыкерски понятно, а к виму привыкать надо...

И тут согласен - _надо_. Ибо мышкотыкерство подходит лишь для хэлловорлдов...

drBatty ★★
()
Ответ на: комментарий от drBatty

Ну то что я перечислил умеют все стандартные джавовские IDE (Eclipse, Netbeans, Idea), про DVCS я и не говорил, просто VCS.

Я не с целью принизить вим и возвысить что-то другое. Просто я его использовал очень давно, и только для редактирования файлов. Но конечно, если ты пишешь на С++, то использование вима в качестве IDE уже не может рассматриваться как костыль. После плюсов не то что вим может быть IDE, но и lynx браузер, и man - читалка.

roy ★★★★★
()
Ответ на: комментарий от roy

>про DVCS я и не говорил, просто VCS.

просто _мне_ не подходит.

После плюсов не то что вим может быть IDE, но и lynx браузер, и man - читалка.

ну под lynx просто сайты не оптимизированы, сравнение некорректно. А less таки неплохой и удобный пейджер. Код им читать конечно не комильфо, но маны - в самый раз :)

drBatty ★★
()
Ответ на: комментарий от LamerOk

Здорово, не знал, спасибо.

А команда :h tags/:h scope найдёт и внутренний класс InnerClass лежащий внутри Class?

А можно найти все реализации метода интерфейса в иерархии классов? Или переопределения метода класса?

Перемещение внутренней переменной на уровень члена класса?

roy ★★★★★
()
Ответ на: комментарий от roy

> А команда :h tags/:h scope найдёт и внутренний класс InnerClass лежащий внутри Class?

А можно найти ...

vim не занимается синтаксическим анализом текста. Всё зависит от бэкенда, типа ctags/cscope. Вопрос не к виму, вопрос к бэкэнду.

Перемещение внутренней переменной на уровень члена класса?

Для плюсов мне достаточно сделать dd на строке с объявлением переменной в методе, переключиться на хидер нажатием w и, поместив курсор клавишами j/k в нужное место, нажать p. Следующее нажатие w вернет меня в прежнее место.

Да, для переключения между хидером и файлом с классами используется плагин a.vim.

Это НЕ автоматический рефакторинг, но в реальной работе гораздо чаще нужно переместить часть строк в произвольное место или за-/рас-комментить их, чем то же таскание переменных из класса в метод и обратно.

В итоге обычные операции над строками/ блоками и быстрый формат кода нужнее, чем «автоматический рефакторинг».

LamerOk ★★★★★
()
Ответ на: комментарий от drBatty

Скорость чего? С гуем на современных тачках проблем нет. СКорость набора текста или выполнения комманд? Так в любой IDE любое действие вешается на хоткей. А уж как экономит время автоматический рефакторинг и манипуляции с кодом...

Nagwal ★★★★
()
Ответ на: комментарий от Nagwal

>СКорость набора текста или выполнения комманд? Так в любой IDE любое действие вешается на хоткей.

Что-бы вы мне там не говорили, но ^W быстрее 11и нажатий BS. И уж тем более быстрее мышки. А ломать пальцы CTRL+ALT+Стрелка влево - не дело. Ну и ещё Over9000 таких мелочей, которые складываются в недели.

А уж как экономит время автоматический рефакторинг и манипуляции с кодом...

я-бы так не сказал. Разве что для размножения китайского кода годный метод... Что можно и в VIM'е.

drBatty ★★
()
Ответ на: комментарий от drBatty

Что-бы вы мне там не говорили, но ^W быстрее 11и нажатий BS. И уж тем более быстрее мышки. А ломать пальцы CTRL+ALT+Стрелка влево - не дело.

Дело привычки

я-бы так не сказал. Разве что для размножения китайского кода годный метод... Что можно и в VIM'е.

vim уже умеет обертывать куски кода try/catch/finally или if блоками? А может get/set методы явовские сгенерить или конструктор по полям или toString() автоматом? А выдернуть в пару кликов/хоткеев интерфейс из объекта? А переместить метод в потомок/наследника? Итд... Все вещи реально нужные, особенно на проекте пишущемся более чем одним человеком.

Nagwal ★★★★
()
Ответ на: комментарий от Nagwal

>Дело привычки

Угу. От которой я долго отучался.

vim уже умеет обертывать куски кода try/catch/finally или if блоками? А может get/set методы явовские сгенерить или конструктор по полям или toString() автоматом? А выдернуть в пару кликов/хоткеев интерфейс из объекта? А переместить метод в потомок/наследника? Итд... Все вещи реально нужные, особенно на проекте пишущемся более чем одним человеком.

Сгенерить код по шаблону может. Шаблоны можно найти/написать. Для C/C++ вроде есть. «Выдернуть что-то типа метода (строчка и потом {чё-то ещё в 9001 строк} )» тоже можно. Парные скобки находить умеет. С плагинами и всякие другие (XML/HTML теги например). Вообще говоря, редактирование - сильная сторона VIM'а, оно реально быстрее всех остальных редакторов.

И да, vim уже совсем не тот что раньше. Там много новых фич и за эти годы много разных плагинов написали. На все случаи жизни.

drBatty ★★
()

В общем, пока что я пришел в выводу, что для сложных проектов все-таки IDE NetBeans удобнее и проще использовать. А в качестве мощного текстового редактора - vim.

kovrik ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.