Поради щодо використання 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 and 'command' буде запущено. Якщо ви хочете швидкої оболонки, введіть:! Bash. тоді, якщо ви виходите, ви повернетесь до vim, а не залишаєте звисаючу фонову роботу. Ви можете отримати оболонку у вікні vim із плагінами.
fuzzyTew

Відповіді:


75

Деякі поради:

  • Переконайтеся, що ви використовуєте vim (vi покращений). Linux та деякі версії UNIX symlink vi to vim.
  • Ви можете отримати заповнення коду за допомогою eclim
  • Або ви можете отримати функціонал vi в Eclipse за допомогою viPlugin
  • Підсвічування синтаксису чудово підходить для vim
  • Vim має гарну підтримку для написання маленьких макросів, як, наприклад, запуск мурашок / maven build

Повеселіться :-)


7
команда для отримання допомоги щодо виділення синтаксису Java. : help java.vim
Michael Ekoka

2
Ще один спосіб отримати функціонал Vim в межах Eclipse - Vrapper . Він має більшість прив’язок ключів Vim, на відміну від viPlugin, він безкоштовний.
n1te

1
Як щодо налагоджувача, який підтримує перехід, перехід тощо?
Донато

1
Linux ... symlink vi to 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. У мене були три основні спроби, про які я знаю. Існує чистий плагін типу viml IDE, який додає безліч функцій, але здається неможливим у використанні. Є еклім, з яким у мене було багато проблем. І є плагін для Eclipse, який фактично вбудовує Vim. Остання здається найбільш перспективною для справжньої серйозної роботи Java EE, але, схоже, вона не працює дуже добре або реально інтегрує всі функції Eclipse із вбудованим Vim.

Такі речі, як додавання відсутнього імпорту за допомогою натискання клавіші, коду захисту від набору тексту та ін., Здаються безцінними для вашої IDE під час роботи над великим проектом Java.


5
голосувати за "^ wf" Я не знав, що таке є у vim :)
Krzysztof Krasoń

4
Чи можете ви пояснити більше про ^ wf? що це робить?
user2427

1
Він відкриває файл / клас java (розширення імені файлу .javaне потрібно) під курсором у новому розділеному вікні, якщо він зможе знайти файл. Ось чому :set path=**корисно.
exic

Так це ** буквально дві зірочки?
тако

1
@lijat :help ^wf- як і інша допомога vim
JESii

22
  • Як викликати завдання Maven, не залишаючи vi?

    Maven не відрізняється від будь-якої іншої команди оболонки:

    :!mvn

    Ви можете, :set makeprg=mvnякщо у вас вже є улюблене відображення ключів :make.

  • Чи можу я отримати заповнення коду?

    Так, eclim - це чудово, міст між ефективністю редагування vim та усвідомленням мови Eclipse Java.

    <C-n>і <C-p>не дуже великі, але дивно корисні.

  • Як виділяється синтаксис?

    Більше ніж достатньо хорошого для вищого верстата на основі регулярних виразів.

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


1
дякую за підказку BeanShell, я не знав про цей інструмент
GoingTharn



8

Я знаю, що це вже через кілька років, але ось кілька цікавих плагінів. Я ще не пробував жодного з них, так що YMMV.

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

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

EDIT: О BTW, я спробував eclim off і on, але причиною, що мені подобається vim, є її легкість. Виконання затемнення навіть у режимі без голови є для мене занадто великим розумовим підйомом.

EDIT2: Останнім часом я використовую playframework, і це, ймовірно, буде працювати і з Maven build:

  • Для компіляції ви можете налаштувати 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 . Його красиво. Використай це. Швидше, ніж затемнення в стрибках по файлах.

  • Для переходу методів я використовую тег-пошук з великими c-тегами. Перейти до декларацій методів за допомогою ctrl-]. Поверніться за допомогою Ctrl-o. Не працює так добре, як затемнення, але воно працює досить добре.

  • Я використовую supertab для заповнення коду. Javacomplete є досить повільним, тому я дотримуюся омні-повної. Знову ж таки, не настільки точне, як затемнення, але воно швидко і працює досить добре для мене.


5

Використовуйте vim. ^ - ^ (gVim, якщо бути точним)

Ви будете мати все це (з деякими плагінами).

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.