Conseils pour utiliser Vim comme IDE Java? [fermé]

195

Je suis accro à Vim, c'est maintenant ma façon de facto d'éditer des fichiers texte.

Étant donné qu'il s'agit principalement d'un éditeur de texte et non d'un IDE, quelqu'un a-t-il des astuces pour me faciliter le développement d'applications Java?

Quelques questions que j'ai:

  • Comment invoquer une tâche maven sans quitter vi?
  • Puis-je obtenir l'achèvement du code?
  • Comment la syntaxe est-elle mise en évidence?

Autre chose (autre que "Ne le faites pas!") Que je devrais savoir?

Allain Lalonde
la source
1
J'utilise beaucoup Netbeans au travail, mais pour mon serveur personnel à la maison ... l'utilisation de NetBeans ne fonctionne pas bien car je devrais faire mon développement sur un autre ordinateur puis déployer. L'aller-retour est tout simplement trop long.
Allain Lalonde
1
@AdamC Entrant de Google ici ... En tant que geek de ligne de commande auto-admis venant de python, je pense que la barrière à l'entrée dans la configuration avec un environnement de développement java est grandement augmentée en ayant besoin de tels programmes. Je dois déjà installer la JVM ... pourquoi devrait-on faire encore PLUS d'installation juste pour lancer un monde bonjour? C'est juste la disposition générale que les gens venant des langages de script vont avoir lors de leur premier apprentissage de Java.
DeaconDesperado
2
Lorsque je modifie dans VIM. Pour revenir à la console, vous pouvez simplement faire ctrl + z qui mettra vim en arrière-plan et vous ramènera à la console. Ensuite, vous pouvez utiliser la commande fg pour ramener vim à votre premier plan
Matthew Kirkley
Vous n'avez pas besoin de ctrl =
fuzzyTew
3
Vous n'avez pas besoin de ctrl + z / fg .. il suffit de taper:! Command et 'command' sera exécuté. Si vous voulez un shell rapide, tapez:! Bash. puis si vous quittez, vous revenez à vim au lieu de quitter un travail d'arrière-plan pendant. Vous pouvez obtenir un shell dans une fenêtre vim avec des plugins.
fuzzyTew

Réponses:

75

Quelques conseils:

  • Assurez-vous d'utiliser vim (vi amélioré). Linux et certaines versions d'UNIX symlink vi à vim.
  • Vous pouvez obtenir l'achèvement du code avec eclim
  • Ou vous pouvez obtenir la fonctionnalité vi dans Eclipse avec viPlugin
  • La mise en évidence de la syntaxe est excellente avec vim
  • Vim prend bien en charge l'écriture de petites macros comme l'exécution de builds ant / maven

S'amuser :-)

boîte à outils
la source
7
pour obtenir de l'aide sur la mise en évidence de la syntaxe java. : help java.vim
Michael Ekoka
2
Une autre façon d'obtenir la fonctionnalité Vim dans Eclipse est Vrapper . Il possède la plupart des raccourcis clavier Vim et contrairement à viPlugin, il est gratuit.
n1te
1
Que diriez-vous d'un débogueur qui prend en charge l'étape, l'étape, etc.?
Donato
1
Linux ... symlink vi à vim Contre-exemple: Arch Linux
johnchen902
30

Je suis un utilisateur de Vim depuis des années. Je commence à me retrouver à lancer Eclipse de temps en temps (en utilisant le plugin vi, qui, je dois dire, a une variété de problèmes). La raison principale est que les builds Java prennent un certain temps ... et ils deviennent de plus en plus lents avec l'ajout de frameworks de build hautement composants comme maven. La validation de vos modifications a donc tendance à prendre un certain temps, ce qui pour moi semble souvent conduire à empiler un tas de problèmes de compilation que je dois résoudre plus tard, et le filtrage à travers les messages de validation prend du temps.

Quand je reçois trop de file d'attente de problèmes de compilation, je lance Eclipse. Cela me permet de faire évoluer les changements. Il est lent, brutal à utiliser et pas aussi agréable qu'un éditeur comme Vim (j'utilise Vim depuis près d'une décennie, c'est donc une seconde nature pour moi). Je trouve pour une édition de précision - besoin de corriger un bogue spécifique, de refactoriser un peu de logique spécifique, ou autre chose ... Je ne peux tout simplement pas être aussi efficace pour éditer dans Eclipse que je peux dans Vim.

Aussi un conseil:

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

Cela fait ^wfd'un nom de classe une fonctionnalité très intéressante pour naviguer dans un grand projet.

Donc, de toute façon, le maigre est, quand j'ai besoin d'ajouter beaucoup de nouveau code, Vim semble me ralentir simplement en raison du temps passé à traquer les problèmes de compilation et des choses similaires. Quand j'ai besoin de trouver et d'éditer des sources spécifiques, Eclipse se sent comme un marteau. J'attends toujours l'IDE magique pour Vim. Il y a eu trois tentatives majeures à ma connaissance. Il existe un plugin de type IDE viml pur qui ajoute beaucoup de fonctionnalités mais semble impossible à utiliser. Il y a eclim, avec lequel j'ai eu beaucoup de mal. Et il y a un plugin pour Eclipse qui intègre réellement Vim. Le dernier semble le plus prometteur pour un vrai travail Java EE sérieux, mais il ne semble pas très bien fonctionner ou vraiment intégrer toutes les fonctionnalités d'Eclipse avec le Vim intégré.

Des choses comme ajouter une importation manquante avec une frappe, du code hilight avec des problèmes de frappe, etc., semblent être inestimables de votre IDE lorsque vous travaillez sur un grand projet Java.

Arjan Tijms
la source
5
voter pour "^ wf" Je ne savais pas qu'il y avait une telle chose dans vim :)
Krzysztof Krasoń
4
Pouvez-vous expliquer plus sur ^ wf? ce qu'il fait?
user2427
1
Il ouvre le fichier / classe java (l'extension de nom de fichier .javan'est pas nécessaire) sous le curseur dans une nouvelle fenêtre fractionnée s'il est capable de trouver le fichier. C'est pourquoi :set path=**est utile.
exique
Les ** sont-ils donc littéralement deux astérisques?
taco
1
@lijat :help ^wf- tout comme les autres aides vim
JESii
22
  • Comment invoquer une tâche maven sans quitter vi?

    Maven n'est pas différent de toute autre commande shell:

    :!mvn

    Vous pouvez le faire :set makeprg=mvnsi vous avez déjà un mappage de clé préféré pour :make.

  • Puis-je obtenir l'achèvement du code?

    Oui, eclim est génial, un pont entre l'efficacité d'édition de vim et la connaissance spécifique au langage Java d'Eclipse.

    <C-n>et <C-p>ne sont pas si géniaux, mais incroyablement utiles.

  • Comment la syntaxe est-elle mise en évidence?

    Plus que suffisant pour un surligneur à base de regex.

Vous voudrez peut-être envisager des outils à d'autres fins vim + java, comme des modèles de code ( snippetEmu - les extraits par défaut sont nuls, mais la personnalisation brille), la recherche d'usages et l'accès aux déclarations (eclim, grep, ctags), la génération de getters et setters ( java_getset , ou eclim), importations automatiques (eclim). Vous pourriez également avoir besoin d'un shell java pour des expériences rapides (le BeanShell , alias bsh).

ngn
la source
1
merci pour la astuce BeanShell, je ne connaissais pas cet outil
GoingTharn
8

Je sais que c'est quelques années plus tard, mais voici quelques plugins intéressants. Je n'ai encore essayé ni l'un ni l'autre, donc YMMV.

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

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

EDIT: Oh un BTW, j'ai essayé eclim de temps en temps, mais la raison pour laquelle j'aime vim est sa légèreté. L'exécution d'éclipse même en mode sans tête est tout simplement trop de soulèvement mental pour moi.

EDIT2: J'ai utilisé playframework récemment et cela fonctionnera probablement aussi avec les builds maven:

  • Pour la compilation, vous pouvez configurer le make de VIM pour exécuter maven ou dans mon cas, exécuter un script de construction, le té dans un fichier.

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

"play_compile" est juste un script de compilation. Il utilise SBT, donc Maven devrait très bien fonctionner ici. Même le javac direct fonctionnera. De cette façon, vous pouvez utiliser le tampon quickfix de VIM (: cnext,: clist: cprev, etc.).

  • Pour sauter dans les classes, j'utilise ctrl-p . C'est beau. Utilise le. Plus rapide que l'éclipse en sautant dans les fichiers.

  • Pour sauter les méthodes, j'utilise la recherche de balises avec des c-tags exubérants. Sautez dans les déclarations de méthode en utilisant ctrl-]. Revenez en utilisant Ctrl-o. Ne fonctionne pas aussi bien que l'éclipse, mais cela fonctionne assez bien.

  • J'utilise supertab pour l'achèvement du code. Javacomplete est assez lent, donc je m'en tiens à omni-complete. Encore une fois, pas aussi précis que l'éclipse, mais son rapide et fonctionne assez bien pour moi.

critium
la source
5

Utilisez vim. ^ - ^ (gVim, pour être précis)

Vous aurez tout (avec quelques plugins).

Btw, snippetsEmu est un bel outil pour coder avec des extraits utiles (comme dans TextMate). Vous pouvez utiliser (ou modifier) ​​un package prédéfini ou créer le vôtre.

Berzemus
la source