Wskazówki dotyczące używania Vima jako środowiska Java IDE? [Zamknięte]

195

Jestem uzależniony od Vima, teraz jest to mój de facto sposób na edycję plików tekstowych.

Ponieważ jest to głównie edytor tekstu, a nie IDE, czy ktoś ma dla mnie jakieś sztuczki, które ułatwią mi tworzenie aplikacji Java?

Mam kilka pytań:

  • Jak wywołać zadanie Maven bez opuszczania vi?
  • Czy mogę uzyskać uzupełnienie kodu?
  • Jak wygląda podświetlanie składni?

Czy jest coś jeszcze (poza „Nie rób tego!”), O czym powinienem wiedzieć?

Allain Lalonde
źródło
1
W pracy intensywnie korzystam z netbeanów, ale w przypadku mojego osobistego serwera w domu ... używanie NetBeans nie działa dobrze, ponieważ musiałbym programować na innym komputerze, a następnie wdrażać. Podróż w obie strony jest po prostu za długa.
Allain Lalonde
1
@AdamC Przychodzące z Google tutaj ... Jako samozwańczy maniak wiersza poleceń pochodzący z Pythona, myślę, że bariera wejścia w konfigurację w środowisku programistycznym Java jest znacznie zwiększona przez potrzebę takich programów. Muszę już zainstalować maszynę JVM ... dlaczego miałoby się wykonywać WIĘCEJ instalacji tylko po to, aby witać świat? To tylko ogólne nastawienie ludzi wywodzących się z języków skryptowych, kiedy po raz pierwszy uczą się javy.
DeaconDesperado
2
Kiedy edytuję w VIM. Aby wrócić do konsoli, możesz po prostu nacisnąć ctrl + z, co umieści vima w tle i przeniesie cię z powrotem do konsoli. Następnie możesz użyć polecenia fg, aby przywrócić vim na pierwszy plan
Matthew Kirkley,
Nie musisz ctrl =
fuzzyTew
3
Nie musisz ctrl + z / fg .. po prostu wpisz:! Polecenie i 'polecenie' zostanie uruchomione. Jeśli potrzebujesz szybkiej powłoki, wpisz:! Bash. następnie jeśli wyjdziesz, wrócisz do vima zamiast opuszczać wiszącą pracę w tle. Możesz pobrać powłokę w oknie Vima z wtyczkami.
fuzzyTew

Odpowiedzi:

75

Kilka porad:

  • Upewnij się, że używasz vim (ulepszone vi). Linux i niektóre wersje linku symbolicznego UNIX vi do vim.
  • Możesz uzyskać uzupełnianie kodu za pomocą eclim
  • Lub możesz uzyskać funkcjonalność vi w Eclipse za pomocą viPlugin
  • Podświetlanie składni jest świetne w vimie
  • Vim ma dobre wsparcie dla pisania małych makr, takich jak uruchamianie kompilacji Ant / Maven

Baw się dobrze :-)

zestaw narzędzi
źródło
7
polecenie, aby uzyskać pomoc dotyczącą podświetlania składni języka Java. : help java.vim
Michael Ekoka
2
Innym sposobem na uzyskanie funkcjonalności Vima w Eclipse jest Vrapper . Ma większość przypisań klawiszy Vima iw przeciwieństwie do viPlugin jest darmowy.
n1te
1
A co z debugerem obsługującym krok po kroku, krok po kroku itp.?
Donato
1
Linux ... link symboliczny vi do vima Counterexample: Arch Linux
johnchen902
31

Jestem użytkownikiem Vima od lat. Zaczynam od czasu do czasu uruchamiać Eclipse (używając wtyczki vi, która, muszę powiedzieć, ma wiele problemów). Głównym powodem jest to, że kompilacje Javy trwają dość długo ... i stają się coraz wolniejsze dzięki dodaniu wysoce skomponowanych struktur kompilacji, takich jak maven. Tak więc sprawdzanie poprawności twoich zmian zajmuje zwykle trochę czasu, co wydaje mi się często prowadzić do nagromadzenia wielu problemów z kompilacją, które muszę rozwiązać później, a filtrowanie komunikatów dotyczących zmian zajmuje trochę czasu.

Kiedy kolejka problemów z kompilacją jest zbyt duża, uruchamiam Eclipse. Pozwala mi na upiększanie zmian. Jest powolny, brutalny w użyciu i nie jest tak przyjemnym edytorem jak Vim (używam Vima od prawie dekady, więc jest to dla mnie druga natura). Uważam, że do precyzyjnej edycji - potrzebuję naprawić konkretny błąd, trzeba zmienić jakiś konkretny fragment logiki lub coś innego ... Po prostu nie mogę być tak wydajny w edycji w Eclipse, jak w Vimie.

Również wskazówka:

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

To sprawia, że ^wfnazwa klasy jest bardzo przydatną funkcją do nawigacji w dużym projekcie.

W każdym razie, chuda jest taka, że ​​kiedy muszę dodać dużo nowego kodu, Vim wydaje się spowalniać mnie po prostu z powodu czasu spędzonego na ściganiu problemów z kompilacją i podobnych rzeczy. Kiedy jednak muszę znaleźć i edytować określone źródła, Eclipse czuje się jak młot kowalski. Wciąż czekam na magiczne IDE dla Vima. Znam trzy główne próby. Istnieje czysta wtyczka typu Viml IDE, która dodaje wiele funkcji, ale wydaje się niemożliwa w użyciu. Jest eclim, z którym miałem dużo problemów. Jest też wtyczka do Eclipse, która faktycznie osadza Vima. Ta ostatnia wydaje się najbardziej obiecująca dla naprawdę poważnych prac związanych z Java EE, ale wydaje się, że nie działa zbyt dobrze ani nie integruje wszystkich funkcji Eclipse z osadzonym Vimem.

Takie rzeczy, jak dodanie brakującego importu za pomocą naciśnięcia klawisza, kodu wysokiego poziomu z problemami z pisaniem itp., Wydają się być bezcenne z twojego IDE podczas pracy nad dużym projektem Java.

Arjan Tijms
źródło
5
zagłosuj na "^ wf" Nie wiedziałem, że w vimie jest coś takiego :)
Krzysztof Krasoń
4
Czy możesz wyjaśnić więcej na temat ^ wf? co to robi?
user2427
1
Otwiera plik / klasę java (rozszerzenie nazwy pliku .javanie jest potrzebne) pod kursorem w nowym podzielonym oknie, jeśli może znaleźć plik. Dlatego :set path=**jest pomocny.
exic
Czy zatem ** to dosłownie dwie gwiazdki?
taco
1
@lijat :help ^wf- podobnie jak inne vim help
JESii
22
  • Jak wywołać zadanie Maven bez opuszczania vi?

    Maven nie różni się od innych poleceń powłoki:

    :!mvn

    Możesz, :set makeprg=mvnjeśli masz już ulubione mapowanie klawiszy :make.

  • Czy mogę uzyskać uzupełnienie kodu?

    Tak, eklim jest świetny, stanowi pomost między wydajnością edycji vima a świadomością języka Java Eclipse.

    <C-n>i <C-p>nie są tak wspaniałe, ale niezwykle pomocne.

  • Jak wygląda podświetlanie składni?

    Więcej niż wystarczająco dobre dla wyróżnienia opartego na wyrażeniach regularnych.

Możesz rozważyć użycie narzędzi do innych celów vim + java, takich jak szablony kodu ( snippetEmu - domyślne fragmenty suck, ale dostosowywanie świeci), wyszukiwanie zastosowań i przechodzenie do deklaracji (eclim, grep, ctags), generowanie metod pobierających i ustawiających ( java_getset , lub eclim), import automatyczny (eclim). Do szybkich eksperymentów możesz również potrzebować powłoki Java ( BeanShell , aka bsh).

ngn
źródło
1
dzięki za wskazówkę BeanShell, nie wiedziałem o tym narzędziu
GoingTharn
8

Wiem, że minęło kilka lat, ale oto kilka interesujących wtyczek. Nie próbowałem jeszcze żadnego z nich, więc YMMV.

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

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

EDYCJA: Och, przy okazji, próbowałem eclim z wyłączaniem i włączaniem, ale powodem, dla którego lubię vim, jest jego lekkość. Wykonywanie zaćmienia nawet w trybie bezgłowym jest dla mnie zbyt dużym wysiłkiem umysłowym.

EDIT2: Ostatnio używam playframework i prawdopodobnie będzie to działać również z kompilacjami maven:

  • W przypadku kompilacji możesz skonfigurować make VIM-a, aby uruchamiał maven lub w moim przypadku uruchomić skrypt kompilacji i przesłać go do pliku.

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

„play_compile” to po prostu skrypt kompilujący. Używa SBT, więc Maven powinien tutaj działać dobrze. Nawet bezpośredni javac będzie działał. W ten sposób możesz użyć bufora quickfix VIM-a (: cnext,: clist: cprev, etc).

  • Do skakania po zajęciach używam ctrl-p . To jest piękne. Użyj tego. Szybszy niż zaćmienie podczas przeskakiwania plików.

  • Do skakania po metodach używam tagsearch z rozbudowanymi tagami c. Przejdź do deklaracji metod, używając ctrl-]. Wróć za pomocą Ctrl-o. Nie działa tak dobrze jak zaćmienie, ale działa wystarczająco dobrze.

  • Używam Supertab do uzupełniania kodu. Javacomplete jest dość powolne, więc trzymam się omni-complete. Ponownie, nie tak dokładne jak zaćmienie, ale jest szybkie i działa wystarczająco dobrze dla mnie.

krytyka
źródło
5

Użyj vim. ^ - ^ (gVim, aby być precyzyjnym)

Będziesz mieć to wszystko (z kilkoma wtyczkami).

Btw, snippetsEmu to fajne narzędzie do kodowania z przydatnymi fragmentami (jak w TextMate). Możesz użyć (lub zmodyfikować) gotowy pakiet lub stworzyć własny.

Berzemus
źródło