Suggerimenti per l'utilizzo di Vim come IDE Java? [chiuso]


195

Sono dipendente da Vim, ora è di fatto il mio modo di modificare i file di testo.

Dato che si tratta principalmente di un editor di testo e non di un IDE, qualcuno ha dei trucchi per farmi più semplice durante lo sviluppo di app Java?

Alcune domande che ho:

  • Come invoco un'attività maven senza lasciare vi?
  • Posso ottenere il completamento del codice?
  • Come viene evidenziata la sintassi?

Qualcos'altro (diverso da "Non farlo!") Che dovrei sapere?


1
Uso netbeans ampiamente sul lavoro, ma per il mio server personale a casa ... l'uso di NetBeans non funziona bene poiché dovrei fare il mio sviluppo su un altro computer e quindi distribuire. Il viaggio di andata e ritorno è troppo lungo.
Allain Lalonde,

1
@AdamC Inbound da Google qui ... Come un fanatico della linea di comando ammesso da Python, penso che la barriera all'ingresso nell'impostazione con un ambiente di sviluppo Java sia notevolmente aumentata dalla necessità di tali programmi. Devo già installare JVM ... perché si dovrebbe fare ANCORA più installazione solo per dare il benvenuto a un mondo? È solo la disposizione generale che avranno le persone che provengono dai linguaggi di scripting quando imparano java per la prima volta.
DeaconDesperado,

2
Quando sto modificando in VIM. Per tornare alla console puoi semplicemente fare ctrl + z che metterà VIM in background e ti riporterà alla console. Quindi puoi usare il comando fg per riportare vim in primo piano
Matthew Kirkley,

Non è necessario ctrl =
fuzzyTew

3
Non è necessario ctrl + z / fg .. basta digitare:! Command e 'command' verrà eseguito. Se vuoi una shell veloce, digita:! Bash. quindi se esci torni a vim invece di lasciare un lavoro in background penzolante. Puoi ottenere una shell in una finestra di vim con plugin.
fuzzy

Risposte:


75

Alcuni suggerimenti:

  • Assicurati di usare vim (vi migliorato). Linux e alcune versioni di UNIX symlink vi a vim.
  • Puoi ottenere il completamento del codice con eclim
  • Oppure puoi ottenere la funzionalità vi in ​​Eclipse con viPlugin
  • L'evidenziazione della sintassi è ottima con vim
  • Vim ha un buon supporto per la scrittura di piccole macro come l'esecuzione di build ant / maven

Divertiti :-)


7
comando per ottenere assistenza sull'evidenziazione della sintassi java. : help java.vim
Michael Ekoka,

2
Un altro modo per ottenere la funzionalità Vim in Eclipse è Vrapper . Ha la maggior parte delle combinazioni di tasti di Vim e, a differenza di viPlugin, è gratuito.
n1te

1
Che ne dici di un debugger che supporti il ​​passaggio, il passaggio, ecc.?
Donato,

1
Linux ... symlink vi a vim Counterexample: Arch Linux
johnchen902

30

Sono un utente Vim da anni. Sto iniziando a trovarmi ad avviare Eclipse di tanto in tanto (usando il plugin vi, che, devo dire, ha una varietà di problemi). Il motivo principale è che i build Java richiedono un po 'di tempo ... e stanno diventando sempre più lenti con l'aggiunta di framework di build altamente componenti come Maven. Quindi la convalida delle modifiche tende a richiedere parecchio tempo, il che per me sembra spesso portare ad accumulare un mucchio di problemi di compilazione che devo risolvere in seguito, e il filtraggio dei messaggi di commit richiede un po 'di tempo.

Quando divento troppo grande in una coda di problemi di compilazione, accendo Eclipse. Mi consente di apportare modifiche ai cambiamenti. È lento, brutale da usare e non è così carino come un editor come Vim (uso Vim da quasi un decennio, quindi per me è una seconda natura). Trovo per l'editing di precisione - la necessità di correggere un bug specifico, il bisogno di refactoring di un po 'di logica specifica o qualcos'altro ... Semplicemente non posso essere più efficiente nell'editing in Eclipse come in Vim.

Anche un consiglio:

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

Questo rende ^wfun nome di classe una funzione molto utile per navigare in un grande progetto.

Quindi, comunque, è magro, quando ho bisogno di aggiungere un sacco di nuovo codice, Vim sembra rallentarmi semplicemente a causa del tempo trascorso a inseguire problemi di compilazione e cose simili. Quando ho bisogno di trovare e modificare fonti specifiche, tuttavia, Eclipse sembra un martello. Sto ancora aspettando l'IDE magico per Vim. Ci sono stati tre tentativi principali che conosco. Esiste un plugin Viml di tipo IDE che aggiunge molte funzionalità ma sembra impossibile da usare. C'è eclim, con cui ho avuto molti problemi. E c'è un plugin per Eclipse che in realtà incorpora Vim. L'ultimo sembra il più promettente per un serio lavoro Java EE, ma non sembra funzionare molto bene o integrare davvero tutte le funzionalità di Eclipse con il Vim incorporato.

Cose come aggiungere un'importazione mancante con una sequenza di tasti, un codice hilight con problemi di battitura, ecc., Sembrano essere inestimabili dal tuo IDE quando lavori su un grande progetto Java.


5
vota per "^ wf" Non sapevo che ci fosse qualcosa di simile in :) :)
Krzysztof Krasoń

4
Puoi spiegarci di più su ^ wf? cosa fa?
user2427

1
Apre il file / classe java (l'estensione del nome .javanon è necessaria) sotto il cursore in una nuova finestra divisa se è in grado di trovare il file. Ecco perché :set path=**è utile.
exic

Quindi gli ** asterischi sono letteralmente due?
Taco,

1
@lijat :help ^wf- proprio come altri aiuti vim
JESii

22
  • Come invoco un'attività maven senza lasciare vi?

    Maven non è diverso da qualsiasi altro comando shell:

    :!mvn

    Puoi :set makeprg=mvnse hai già una mappatura dei tasti preferita per :make.

  • Posso ottenere il completamento del codice?

    Sì, eclim è fantastico, un ponte tra l'efficienza di editing di vim e la consapevolezza specifica del linguaggio Java di Eclipse.

    <C-n>e <C-p>non sono così grandi, ma incredibilmente utili.

  • Come viene evidenziata la sintassi?

    Più che sufficiente per un evidenziatore basato su regex.

Puoi prendere in considerazione strumenti per altri scopi di vim + java, come modelli di codice ( snippetEmu: frammenti predefiniti fanno schifo, ma la personalizzazione brilla), cercando usi e andando a dichiarazioni (eclim, grep, ctags), generando getter e setter ( java_getset , o eclim), importazioni automatiche (eclim). Potresti anche aver bisogno di una shell Java per esperimenti rapidi ( BeanShell , aka bsh).


1
grazie per il suggerimento BeanShell, non sapevo di quello strumento
GoingTharn



8

So che ci vorranno alcuni anni dopo, ma ecco alcuni plugin interessanti. Non ho ancora provato nessuno di questi, quindi YMMV.

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

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

EDIT: Oh un BTW, ho provato eclim fuori e on, ma il motivo che mi piace vim è la sua leggerezza. Eseguire l'eclissi anche in modalità senza testa è troppo sollevamento mentale per me.

EDIT2: Recentemente ho usato il playframework e questo probabilmente funzionerà anche con build maven:

  • Per la compilazione, puoi configurare make di VIM per eseguire maven o, nel mio caso, eseguire uno script di compilazione, collegarlo a un file.

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

"play_compile" è solo uno script di compilazione. Usa SBT quindi Maven dovrebbe funzionare bene qui. Anche il javac diretto funzionerà. In questo modo, è possibile utilizzare il buffer quickfix di VIM (: cnext,: clist: cprev, ecc.).

  • Per saltare le lezioni, uso ctrl-p . È bellissimo. Usalo Più veloce dell'eclissi nel saltare i file.

  • Per saltare i metodi, uso tagsearch con esuberanti tag c. Passa alle dichiarazioni dei metodi usando ctrl-]. Torna indietro usando Ctrl-o. Non funziona bene come l'eclissi, ma funziona abbastanza bene.

  • Uso supertab per il completamento del codice. Il Javacomplete è piuttosto lento, quindi mi attengo all'omni-completo. Ancora una volta, non è preciso come l'eclissi, ma è veloce e funziona abbastanza bene per me.


5

Usa vim. ^ - ^ (gVim, per essere precisi)

Avrai tutto (con alcuni plugin).

Btw, snippetsEmu è un ottimo strumento per la codifica con snippet utili (come in TextMate). Puoi usare (o modificare) un pacchetto pre-creato o crearne uno tuo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.