2010-05-06 2 views
81

Posso aprire una shell usando il comando: shell in Vim, tuttavia non posso modificare un file e allo stesso tempo usare la shell.Come posso aprire una shell in una finestra Vim?

C'è un modo per dividere Vim in molte finestre (o schede) e avere una shell aperta in una di esse?

+1

C'era una patch di shell là fuori per Vim ma non si compila più afaik. La cosa più vicina a una vera shell è usare screen o tmux. Questa è la cosa più grande che mi manca in vim. –

+2

Sembra un duplicato di http://stackoverflow.com/questions/1236563/how-to-run-a-terminal-inside-of-vim –

risposta

43

Beh, dipende dal sistema operativo in uso - in realtà non l'ho provato su MS Windows - ma lo Conque è uno dei migliori plug-in.

In realtà, può essere migliore, ma funziona.

+4

Se si utilizza Vundle per gestire i plugin, è possibile aggiungere Bundle 'jewes/Conque-Shell' al proprio file .vimrc ed eseguire: BundleInstall per installarlo. –

+0

Una cosa da tenere a mente: il requisito + python o + python3 per vi può essere un killer in alcuni ambienti di lavoro. – cfi

+0

Questo è l'URL aggiornato (con schermate): https://github.com/wkentaro/conque.vim –

17

:vsp o - divide vim in due istanze ma non è possibile utilizzare: shell in uno solo di essi.

Perché non visualizzare un'altra scheda del terminale non un'altra scheda di Vim. Se vi piace l'idea che si può provare: Ctrl-shift-t. e passare da una all'altra con Ctrl - pageup e Ctrl - pagedown

Se si desidera comanda solo alcuni shell è possibile effettuare qualsiasi comando shell in vim usando !

Per esempio :!./a.out.

+1

E per eseguire un eseguibile attualmente aperto puoi usare il percorso 'vim' come così: ':! ./%' – cprn

7

È possibile utilizzare tmux o screen (il secondo è in grado di eseguire solo divisioni orizzontali senza patch) per suddividere il terminale. Ma non conosco il modo di avere un'istanza di Vim in entrambi i riquadri.

+3

schermo può fare split verticale se lo si costruisce da git. –

8

Se non l'hai ancora scoperto, puoi utilizzare lo straordinario screen plugin.

Conque è eccezionale ma trovo schermo molto più pratico (non ci vorrà "cucciolata" il buffer per esempio, e si può solo inviare i comandi che si vuole veramente dopo averli modificati nel buffer)

3

Shougo di VimShell, che può completare automaticamente i nomi dei file se usato con neocomplcache

1

Non è assolutamente quello che stai chiedendo, ma potresti essere interessato dal mio plugin vim-notebook che consente all'utente di mantenere vivo un processo in background e di farlo valutare parte del documento corrente (e per scrivere l'output nel documento). È destinato ad essere utilizzato su documenti in stile notebook contenenti pezzi di codice da valutare.

0

Si consiglia di aprire un programma "schermo", schermo diviso, aprire shell su uno e Vim su un altro. Funziona per me.

+0

Annullato il -1 perché non c'era alcuna spiegazione. Inoltre, ho provato la soluzione plug-in di vim screen e non è poi così diversa dalla soluzione di mrcybul. @mrcybul: carri armati per aver cercato di aiutare. Per evitare di essere downvoted, leggi attentamente le altre risposte e aggiungi il tuo solo se pensi che porti qualcosa di nuovo. Inoltre, includi perché la tua soluzione potrebbe essere migliore in determinati casi. – Titou

6

In ritardo, ma come suggerimento utile per le persone che arrivano qui tramite Google.

Neovim ora supporta questo in modo nativo tramite il comando terminal.

+2

Disponibile anche in vim 8, esattamente lo stesso comando. – roryrjb

0

Attualmente sto usando tmux.

Installazione: sudo apt-get install tmux eseguirlo: tmux

Ctrl + B seguita da Ctr +%: si divide la finestra di terminale in due metà verticali.

Ctrl + "freccia sinistra | freccia destra": si sposta tra i terminali.

2

Immagino che questa sia una domanda abbastanza vecchia, ma ora nel 2017. Abbiamo neovim, che è un fork di vim che aggiunge il supporto del terminale.

Quindi richiamando :term si apriva una finestra di terminale. La bellezza di questa soluzione rispetto all'uso di tmux (un multiplexer terminale) è che avrete le stesse associazioni di finestre della vostra configurazione vim. neovim è compatibile con vim, quindi puoi fondamentalmente copiare e incollare il tuo .vimrc e funzionerà.

Ulteriori vantaggi sono la possibilità di passare alla modalità normale sul terminale aperto e di eseguire operazioni di copia e modifica di base. È anche abbastanza utile anche per i commit git, dal momento che tutto nel buffer può essere utilizzato nel completamento automatico.

Aggiornerò questa risposta poiché anche Vim sta pianificando di rilasciare il supporto del terminale, probabilmente in vim 8.1. È possibile seguire i progressi qui: https://groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM

Una volta rilasciato, credo che questa sia una configurazione superiore rispetto all'uso di tmux.

+1

È stato rilasciato su Vim 8.0, credo – LangeHaare