Compilazione del codice da vim


18

Nuovo vime e voglio essere in grado di compilare il codice dall'interno vimsenza eseguire un nuovo terminale e chiamare il compilatore.

Come procedo a fare questo? Nota che questo requisito non è limitato a gccsolo, a volte ho bisogno di chiamare pythonanche lo script corrente su cui sto lavorando, quindi hai l'idea ...

Risposte:


25

Scrivi a Makefile, quindi puoi semplicemente:

:make

dall'interno di vim. E se la compilazione fallisce:

:copen

ti mostrerà avvertimenti ed errori. Selezionandoli si accederà al file e alla riga appropriati.


12

In vim, il file corrente può essere indicato come %, quindi

:!python %

Vedi :he cmdline-special(o qui )


6

Se per qualche motivo non ti piacciono i makefile puoi chiamare qualsiasi comando con:!

Ad esempio puoi usare ":! Javac * .java && java Foo" per compilare ed eseguire un semplice programma java. Puoi anche chiamare altri sistemi di build (scons, cmake, ...) in questo modo.


3

Prova il plugin quickrun per Vim. La pagina include un link a github, che è l'ultima versione ed è quello che uso.

Il vantaggio nell'uso di questo plugin rispetto a quello di fare :!, l'output del comando verrà raccolto e mostrato in una finestra divisa.

Inoltre, per impostazione predefinita quel plugin bloccherà la tua istanza vim quando gli chiedi di eseguire un comando, ma può essere configurato per eseguire il comando in modo asincrono, che è quello che faccio. Leggi la documentazione per maggiori dettagli.


3

Uso un vim che ha compilato l'interprete Python.

Ho un file Python che ha questa funzione:

def pyterm(filename="", interactive=1):
    cmd = "%s %s %s " % (PYTHON, "-i" if interactive else "", filename)
    if "DISPLAY" in os.environ:
        return run_config(os.environ.get("XTERM"), cmd)
    else:
        return os.system(cmd)

E mappalo su una scorciatoia da tastiera:

nmap ;ru :update<CR>:python pyterm(vim.current.buffer.name, 0)<CR>
nmap ;ri :update<CR>:python pyterm(vim.current.buffer.name, 1)<CR>

In precedenza avevo impostato alcune variabili di ambiente per determinare il terminale esatto in cui eseguire se si utilizza gvim o nello stesso terminale se non in una X.

Quindi di solito basta digitare '; ri' in un buffer Python per eseguirlo (di solito per testarlo).


2

Vim può essere usato per compilare usando gnu make sul file corrente - anche se non c'è Makefile per il file (per maggiori dettagli vedi qui ):

:make %:r

In questo modo vim ti dà accesso al feedback degli errori di correzione rapida dall'elenco del compilatore ( :help quickfix) - :cnErrore successivo, :cpErrore precedente, :cwErrori di elenco in una nuova finestra.

Se non hai gnu make, puoi impostare la variabile makeprg (cambia in g ++ se stai compilando C ++):

:se makeprg=gcc\ -o\ %<\ %

e quindi usa il comando vim make per compilare il file corrente e ottenere un elenco di errori rapidi in vim:

:make

EDIT: Se vuoi anche eseguire l'eseguibile compilato da dentro vim puoi farlo ('!' Esegue, '%: r' è il nome del file senza il suo suffisso):

:!./%:r

1

In caso di gcc, python ecc. Puoi chiamarlo con due punti (:!)

Per esempio. :!python something.py


0
!gcc file.c && ./a.out

Questo compilerà il tuo file C ed eseguirà l'eseguibile chiedendo l'input tutto nella tua finestra di vim.


1
Una risposta più completa dovrebbe includere ':', e per renderlo più versatile è possibile modificare 'file.c' per l'operatore di file corrente '%'::!gcc % && ./a.out
Pierz

Sto facendo qualcosa di simile nel mio .vimrc, Command + Shift + Rmap <D-R> :exe '!gcc %:p' <bar> exe '!'.getcwd().'/a.out'<cr>
mappo

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.