Tipps zur Verwendung von Vim als Java-IDE? [geschlossen]

195

Ich bin süchtig nach Vim, es ist jetzt meine faktische Art, Textdateien zu bearbeiten.

Hat jemand Tricks für mich, um die Entwicklung von Java-Apps zu vereinfachen, da es sich hauptsächlich um einen Texteditor und nicht um eine IDE handelt?

Einige Fragen, die ich habe:

  • Wie rufe ich eine Maven-Aufgabe auf, ohne vi zu verlassen?
  • Kann ich den Code vervollständigen?
  • Wie wird die Syntax hervorgehoben?

Sonst noch etwas (außer "Tu es nicht!"), Über das ich Bescheid wissen sollte?

Allain Lalonde
quelle
1
Ich verwende Netbeans häufig bei der Arbeit, aber für meinen persönlichen Server zu Hause ... Die Verwendung von NetBeans funktioniert nicht gut, da ich meine Entwicklung auf einem anderen Computer durchführen und dann bereitstellen müsste. Die Rundreise ist einfach zu lang.
Allain Lalonde
1
@AdamC Eingehend von Google hier ... Als selbstbekannter Befehlszeilenfreak aus Python denke ich, dass die Eintrittsbarriere bei der Einrichtung mit einer Java-Entwicklungsumgebung durch die Notwendigkeit solcher Programme erheblich erhöht wird. Ich muss die JVM bereits installieren ... warum sollte man noch MEHR installieren müssen, um eine Hallo-Welt in Gang zu bringen? Es ist nur die allgemeine Einstellung, die Menschen aus Skriptsprachen haben werden, wenn sie zum ersten Mal Java lernen.
DeaconDesperado
2
Wenn ich in VIM bearbeite. Um zur Konsole zurückzukehren, können Sie einfach Strg + Z drücken, um vim in den Hintergrund zu stellen und Sie zurück zur Konsole zu bringen. Dann können Sie den Befehl fg verwenden, um vim wieder in den Vordergrund zu bringen
Matthew Kirkley
Sie müssen nicht Strg =
fuzzyTew
3
Sie müssen nicht Strg + z / fg drücken. Geben Sie einfach Folgendes ein :! Befehl und 'Befehl' wird ausgeführt. Wenn Sie eine schnelle Shell wünschen, geben Sie Folgendes ein :! Bash. Wenn Sie dann beenden, kehren Sie zu vim zurück, anstatt einen baumelnden Hintergrundjob zu verlassen. Sie können eine Shell in einem Vim-Fenster mit Plugins erhalten.
FuzzyTew

Antworten:

75

Einige Hinweise:

  • Stellen Sie sicher, dass Sie vim verwenden (vi verbessert). Linux und einige Versionen von UNIX symlink vi to vim.
  • Sie können die Code-Vervollständigung mit eclim erhalten
  • Oder Sie können vi-Funktionalität in Eclipse mit viPlugin erhalten
  • Die Syntaxhervorhebung eignet sich hervorragend für vim
  • Vim hat eine gute Unterstützung für das Schreiben kleiner Makros wie das Ausführen von Ant / Maven- Builds

Habe Spaß :-)

Toolkit
quelle
7
Befehl, um Hilfe zum Hervorheben der Java-Syntax zu erhalten. : Hilfe java.vim
Michael Ekoka
2
Eine andere Möglichkeit, die Vim-Funktionalität in Eclipse zu erhalten, ist Vrapper . Es hat die meisten Vim-Tastenkombinationen und ist im Gegensatz zu viPlugin kostenlos.
n1te
1
Wie wäre es mit einem Debugger, der Step Over, Step Through usw. unterstützt?
Donato
1
Linux ... symlink vi to vim Gegenbeispiel: Arch Linux
johnchen902
30

Ich bin seit Jahren ein Vim-Benutzer. Ich fange an, gelegentlich Eclipse zu starten (mit dem vi-Plugin, das, wie ich sagen muss, eine Vielzahl von Problemen hat). Der Hauptgrund ist, dass Java-Builds eine ganze Weile dauern ... und sie werden immer langsamer, wenn hochkomponentierte Build-Frameworks wie maven hinzugefügt werden. Die Überprüfung Ihrer Änderungen dauert daher in der Regel eine Weile, was für mich häufig dazu führt, dass eine Reihe von Kompilierungsproblemen gestapelt werden, die ich später beheben muss, und das Filtern durch die Festschreibungsnachrichten dauert eine Weile.

Wenn ich eine zu große Warteschlange mit Kompilierungsproblemen habe, starte ich Eclipse. Damit kann ich die Änderungen in den Griff bekommen. Es ist langsam, brutal zu bedienen und bei weitem nicht so gut wie Vim (ich benutze Vim seit fast einem Jahrzehnt, daher ist es für mich eine Selbstverständlichkeit). Ich finde für die präzise Bearbeitung - ich muss einen bestimmten Fehler beheben, ein bestimmtes Stück Logik umgestalten oder etwas anderes ... Ich kann in Eclipse einfach nicht so effizient bearbeiten wie in Vim.

Auch ein Tipp:

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

Dies macht ^wfeinen Klassennamen zu einer sehr schönen Funktion für die Navigation in einem großen Projekt.

Wenn ich also viel neuen Code hinzufügen muss, scheint Vim mich zu verlangsamen, einfach weil ich Zeit damit verbracht habe, Kompilierungsprobleme und ähnliches zu verfolgen. Wenn ich jedoch bestimmte Quellen finden und bearbeiten muss, fühlt sich Eclipse wie ein Vorschlaghammer an. Ich warte immer noch auf die magische IDE für Vim. Ich kenne drei große Versuche. Es gibt ein reines viml IDE-Plugin, das viele Funktionen hinzufügt, aber unmöglich zu verwenden scheint. Es gibt Eclim, mit dem ich große Probleme hatte. Und es gibt ein Plugin für Eclipse, das Vim tatsächlich einbettet. Das letzte scheint das vielversprechendste für wirklich ernsthafte Java EE-Arbeiten zu sein, aber es scheint nicht sehr gut zu funktionieren oder alle Funktionen von Eclipse wirklich in das eingebettete Vim zu integrieren.

Dinge wie das Hinzufügen eines fehlenden Imports mit einem Tastendruck, Hilight-Code mit Tippproblemen usw. scheinen für Ihre IDE von unschätzbarem Wert zu sein, wenn Sie an einem großen Java-Projekt arbeiten.

Arjan Tijms
quelle
5
stimme für "^ wf" Ich wusste nicht, dass es so etwas in vim gibt :)
Krzysztof Krasoń
4
Kannst du mehr über ^ wf erklären? Was es macht?
user2427
1
Es öffnet die Java-Datei / Klasse (Dateinamenerweiterung .javaist nicht erforderlich) unter dem Cursor in einem neuen geteilten Fenster, wenn die Datei gefunden werden kann. Deshalb :set path=**ist hilfreich.
Exic
Also sind die ** buchstäblich zwei Sternchen?
Taco
1
@lijat :help ^wf- genau wie andere vim Hilfe
JESii
22
  • Wie rufe ich eine Maven-Aufgabe auf, ohne vi zu verlassen?

    Maven unterscheidet sich nicht von anderen Shell-Befehlen:

    :!mvn

    Sie können, :set makeprg=mvnwenn Sie bereits eine bevorzugte Schlüsselzuordnung für haben :make.

  • Kann ich den Code vervollständigen?

    Ja, Eclim ist großartig, eine Brücke zwischen der Bearbeitungseffizienz von vim und dem sprachspezifischen Java-Bewusstsein von Eclipse.

    <C-n>und <C-p>sind nicht so toll, aber erstaunlich hilfreich.

  • Wie wird die Syntax hervorgehoben?

    Mehr als gut genug für einen Regex-basierten Textmarker.

Möglicherweise möchten Sie Tools für andere vim + java-Zwecke in Betracht ziehen, z. B. Codevorlagen ( snippetEmu - Standard-Snippets sind zum Kotzen, aber die Anpassbarkeit glänzt), nach Verwendungen suchen und zu Deklarationen (eclim, grep, ctags) gehen, Getter und Setter generieren ( java_getset , oder eclim), automatische Importe (eclim). Möglicherweise benötigen Sie auch eine Java-Shell für schnelle Experimente (die BeanShell , auch bekannt als bsh).

ngn
quelle
1
Vielen
8

Ich weiß, dass dies einige Jahre später ist, aber hier sind einige interessante Plugins. Ich habe beides noch nicht ausprobiert, also YMMV.

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

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

EDIT: Oh übrigens, ich habe Eclim immer wieder ausprobiert, aber der Grund, warum ich Vim mag, ist seine Leichtigkeit. Das Ausführen von Eclipse auch im kopflosen Modus ist für mich einfach zu viel mentales Heben.

EDIT2: Ich habe in letzter Zeit Playframework verwendet und dies wird wahrscheinlich auch mit Maven Builds funktionieren:

  • Zum Kompilieren können Sie VIMs make so konfigurieren, dass es maven ausführt, oder in meinem Fall ein Build-Skript ausführen und das in eine Datei umwandeln.

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

"play_compile" ist nur ein Kompilierungsskript. Es verwendet SBT, also sollte Maven hier gut funktionieren. Sogar direkter Javac wird funktionieren. Auf diese Weise können Sie den Quickfix-Puffer von VIM (: cnext ,: clist: cprev usw.) verwenden.

  • Zum Herumspringen benutze ich Strg-P . Es ist wunderschön. Benutze es. Schneller als Eclipse beim Herumspringen in Dateien.

  • Zum Herumspringen verwende ich die Tagsuche mit üppigen C-Tags. Springen Sie mit Strg-] in Methodendeklarationen. Gehen Sie mit Strg-o zurück. Funktioniert nicht so gut wie Eclipse, aber es funktioniert gut genug.

  • Ich benutze Supertab für die Code-Vervollständigung. Javacomplete ist ziemlich langsam, also bleibe ich bei Omni-Complete. Wieder nicht so genau wie Eclipse, aber es ist schnell und funktioniert gut genug für mich.

kritium
quelle
5

Verwenden Sie vim. ^ - ^ (gVim, um genau zu sein)

Sie werden alles haben (mit einigen Plugins).

Übrigens ist snippetsEmu ein nettes Tool zum Codieren mit nützlichen Snippets (wie in TextMate). Sie können ein vorgefertigtes Paket verwenden (oder ändern) oder ein eigenes erstellen.

Berzemus
quelle