Come posso aprire una Shell all'interno di una finestra di Vim?


112

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

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 shell vera è usare screen o tmux. Questa è la cosa più grande che mi manca in vim.
Randy Morris

2
Si presenta come un duplicato di stackoverflow.com/questions/1236563/...
Brad Cupit

Risposte:


85

Neovim e Vim lo 8.2supportano in modo nativo tramite il :ter[minal]comando.

Vedere terminal-windownei documenti per i dettagli.


5
Questa dovrebbe essere la soluzione accettata per vim> = 8.0.
amath

3
Come dividere il terminale verticalmente?
Kiran Kumar Kotari

2
@KiranKumarKotari prova vsplit term://bashse stai usando Neovim.
prater

4
con vim 8.0 o successivo, il terminalcomando divide la finestra e fornisce una shell dei comandi con un colore speciale sulla barra di stato della finestra. Slick.
NoelProf

@KiranKumarKotari vert [ical] ter [
minal

46

Beh, dipende dal tuo sistema operativo - in realtà non l'ho testato su MS Windows - ma Conque è uno dei migliori plugin in circolazione .

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


4
Se stai usando Vundle per gestire i plugin, puoi aggiungere Bundle "jewes / Conque-Shell" al tuo file .vimrc ed eseguire: BundleInstall per installarlo.
Mingjiang Shi

Una cosa a cui prestare attenzione: il requisito + python o + python3 per vi può essere un killer in alcuni ambienti di lavoro.
cfi

Questo è l'URL aggiornato (con screenshot): github.com/wkentaro/conque.vim
Walty Yeung

18

:vspoppure :sp- divide vim in due istanze ma non puoi usare: shell solo in una di esse.

Perché non visualizzare un'altra scheda del terminale e non un'altra scheda di vim. Se l'idea ti piace puoi provarla: Ctrl-shift-t.e spostarti tra di loro con Ctrl - pageupeCtrl - pagedown

Se vuoi solo pochi comandi di shell puoi creare qualsiasi comando di shell in vim usando !

Ad esempio :!./a.out.


1
E per eseguire un eseguibile attualmente aperto è possibile utilizzare la vimmagia del percorso in questo modo::!./%
cprn

Perché non visualizzare un'altra scheda del terminale - non tutti usano vim in un emulatore di terminale sopra una GUI ... Da Ctrl-qualunque cosa suppongo che la tua risposta presupponga gnome-terminal o un emulatore simile.
törzsmókus

8

Puoi usare tmuxo screen(second è in grado di fare solo divisioni orizzontali senza patch) per dividere il tuo terminale. Ma non so come avere un'istanza di Vim in entrambi i riquadri.


4
screen può fare divisioni verticali se lo costruisci da git.
Randy Morris

8

Se non l'hai ancora scoperto, puoi usare lo straordinario plug-in dello schermo .

Anche Conque è eccezionale ma trovo lo schermo molto più pratico (ad esempio non "sporcherà" il tuo buffer e puoi semplicemente inviare i comandi che vuoi veramente dopo averli modificati nel tuo buffer)


6

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 invocare :termaprirebbe una finestra di terminale. La bellezza di questa soluzione rispetto all'uso di tmux (un multiplexer di terminale) è che avrai le stesse associazioni di finestre della tua vimconfigurazione. neovim è compatibile con vim, quindi puoi praticamente copiare e incollare il tuo .vimrce funzionerà.

Altri vantaggi sono che puoi passare alla modalità normale sul terminale aperto e puoi eseguire operazioni di copia e modifica di base. È anche abbastanza utile anche per i commit git, immagino, poiché tutto nel tuo buffer puoi usare nel completamento automatico.

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

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


6
È stato rilasciato in Vim 8.0 credo
LangeHaare

3

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


1

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


0

Potresti voler aprire un programma "schermo", schermo diviso, aprire la shell su uno e vim su un altro. Per me va bene.


Annullato il -1 perché non c'era spiegazione. Inoltre, ho testato la soluzione plug-in vim screen e non è molto diversa dalla soluzione di mrcybul. @mrcybul: tank per aver cercato di aiutare. Per evitare di essere sottovalutato, leggi attentamente le altre risposte e aggiungi la tua solo se pensi che porti qualcosa di nuovo. Includere anche il motivo per cui la soluzione potrebbe essere migliore in alcuni casi.
Titou

0

Attualmente sto usando tmux.

Installazione: sudo apt-get install tmux Eseguilo: tmux

Ctrl + b seguito da Ctr +%: divide la finestra del terminale in due metà verticali.

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

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.