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?
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?
Risposte:
Neovim e Vim lo 8.2
supportano in modo nativo tramite il :ter[minal]
comando.
Vedere terminal-window
nei documenti per i dettagli.
vsplit term://bash
se stai usando Neovim.
terminal
comando divide la finestra e fornisce una shell dei comandi con un colore speciale sulla barra di stato della finestra. Slick.
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.
:vsp
oppure :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 - pageup
eCtrl - pagedown
Se vuoi solo pochi comandi di shell puoi creare qualsiasi comando di shell in vim usando !
Ad esempio :!./a.out
.
vim
magia del percorso in questo modo::!./%
Ctrl
-qualunque cosa suppongo che la tua risposta presupponga gnome-terminal o un emulatore simile.
Puoi usare tmux
o 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.
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)
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 :term
aprirebbe 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 vim
configurazione. neovim è compatibile con vim, quindi puoi praticamente copiare e incollare il tuo .vimrc
e 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.
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.
Potresti voler aprire un programma "schermo", schermo diviso, aprire la shell su uno e vim su un altro. Per me va bene.
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.