¿Cómo puedo abrir un Shell dentro de una ventana de Vim?

112

Puedo abrir un shell usando el comando: shell en Vim, sin embargo, no puedo editar un archivo y al mismo tiempo usar el shell.

¿Hay alguna forma de dividir Vim en muchas ventanas (o pestañas) y tener un shell abierto en una de ellas?

Martín Fixman
fuente
1
Solía ​​haber un parche de shell para vim, pero ya no se compila afaik. Lo más cerca que va a llegar a un verdadero shell es usar screen o tmux. Esto es lo más grande que echo de menos en vim.
Randy Morris
2
Parece un duplicado de stackoverflow.com/questions/1236563/…
Brad Cupit

Respuestas:

85

Neovim y Vim 8.2admiten esto de forma nativa a través del :ter[minal]comando.

Consulte terminal-windowlos documentos para obtener más detalles.

charlatán
fuente
5
Esta debería ser la solución aceptada para vim> = 8.0.
amath
3
¿Cómo dividir el terminal verticalmente?
Kiran Kumar Kotari
2
@KiranKumarKotari inténtalo vsplit term://bashsi estás usando Neovim.
prater
4
con vim 8.0 o posterior, el terminalcomando divide la ventana y proporciona un shell de comando con un color especial en la barra de estado de la ventana. Resbaloso.
NoelProf
@KiranKumarKotari vert [ical] ter [minal]
MPA95
46

Bueno, depende de su sistema operativo, en realidad no lo probé en MS Windows, pero Conque es uno de los mejores complementos que existen.

De hecho, puede ser mejor, pero funciona.

Zsolt Botykai
fuente
4
Si está utilizando Vundle para administrar los complementos, puede agregar Bundle 'jewes / Conque-Shell' a su archivo .vimrc y ejecutar: BundleInstall para instalarlo.
Mingjiang Shi
Una cosa a tener en cuenta: el requisito + python o + python3 para vi puede ser un asesino en algunos entornos de trabajo.
cfi
Esta es la URL actualizada (con capturas de pantalla): github.com/wkentaro/conque.vim
Walty Yeung
18

:vspo :sp- divide vim en dos instancias pero no puede usar: shell en solo una de ellas.

¿Por qué no mostrar otra pestaña del terminal, no otra pestaña de vim? Si te gusta la idea, puedes probarla: Ctrl-shift-t.y moverte entre ellos con Ctrl - pageupyCtrl - pagedown

Si solo desea unos pocos comandos de shell, puede crear cualquier comando de shell en vim usando !

Por ejemplo :!./a.out.

Vladv
fuente
1
Y para ejecutar un ejecutable actualmente abierto, puede usar la vimmagia de ruta de la siguiente manera::!./%
cprn
¿Por qué no mostrar otra pestaña de la terminal ? No todo el mundo está usando vim en un emulador de terminal por encima de una GUI ... De lo que Ctrlsea, supongo que su respuesta asume gnome-terminal o un emulador similar.
törzsmókus
8

Puede usar tmuxo screen(el segundo es capaz de hacer solo divisiones horizontales sin un parche) para dividir su terminal. Pero no conozco la forma de tener una instancia de Vim en ambos paneles.

ZyX
fuente
4
screen puede hacer divisiones verticales si la construyes desde git.
Randy Morris
8

Si aún no lo ha descubierto, puede usar el increíble complemento de pantalla .

Conque también es excepcional, pero encuentro la pantalla mucho más práctica (no "ensuciará" tu búfer, por ejemplo, y puedes enviar los comandos que realmente quieras después de editarlos en tu búfer)

Eelvex
fuente
6

Supongo que esta es una pregunta bastante antigua, pero ahora en 2017. Tenemos neovim, que es una bifurcación de vim que agrega soporte de terminal.

Por :termlo tanto, invocar abriría una ventana de terminal. La belleza de esta solución en comparación con el uso de tmux (un multiplexor de terminal) es que tendrá los mismos enlaces de ventana que su vimconfiguración. neovim es compatible con vim, por lo que básicamente puede copiar y pegar su .vimrcy simplemente funcionará.

Más ventajas son que puede cambiar al modo normal en el terminal abierto y puede realizar copias y ediciones básicas. También es bastante útil para las confirmaciones de git, supongo, ya que todo lo que hay en su búfer puede usar en autocompletar.

Actualizaré esta respuesta ya que vim también planea lanzar soporte de terminal, probablemente en vim 8.1. Puede seguir el progreso aquí: https://groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM

Una vez que se lanza, creo que esta es una configuración más superior que usar tmux.

chriz
fuente
6
Fue lanzado en Vim 8.0, creo
LangeHaare
3

VimShell de Shougo , que puede autocompletar nombres de archivos si se usa con neocomplcache

kuroz
fuente
1

No es absolutamente lo que está pidiendo, pero puede que le interese mi complemento vim-notebook, que permite al usuario mantener vivo un proceso en segundo plano y hacer que evalúe parte del documento actual (y escribir la salida en el documento). Está destinado a ser utilizado en documentos de estilo cuaderno que contienen fragmentos de código para ser evaluados.

Thomas Baruchel
fuente
0

Es posible que desee abrir un programa de "pantalla", pantalla dividida, abrir shell en uno y vim en otro. Funciona para mi.

mrcybul
fuente
Se canceló el -1 porque no hubo explicación. Además, probé la solución del complemento de pantalla vim y no es tan diferente de la solución de mrcybul. @mrcybul: tanques por intentar ayudar. Para evitar ser rechazado, lea atentamente las otras respuestas y agregue la suya solo si cree que aporta algo nuevo. También incluya por qué su solución puede ser mejor en ciertos casos.
Titou
0

Actualmente estoy usando tmux.

Instalación: sudo apt-get install tmux Ejecutarlo: tmux

Ctrl + b seguido de Ctr +%: divide la ventana de su terminal en dos mitades verticales.

Ctrl + "flecha izquierda | flecha derecha": se mueve entre terminales.

Arturo Ruiz Mañas
fuente