Acceso a la terminal mientras estás en Vim


40

¿Hay alguna forma de acceder al terminal mientras se usa Vim ?

No me gusta abrir otra terminal o guardar y salir de la terminal actual.


¿Abrir una nueva pestaña? (Ctrl + Shift + T)
Wilf

2
¿Cuántas veces haces eso? :) No me gusta hacer eso D:
Mohammad Reza Rezwani

1
¿Has intentado usar un administrador de ventana de terminal como tmux?
jrg

Respuestas:


67

Puede enviar vim la señal SIGTSTP. Para ello, presione ctrl+ z. Vim se suspenderá en segundo plano, y puede usar el terminal. Escriba fgen la terminal para reanudar con vim.

Consejo adicional: esto funciona en casi todas las aplicaciones de terminal. Use bgpara permitir que la aplicación continúe ejecutándose en segundo plano.


21
O solo en %lugar de fg. O %1, %2etc., si tiene muchos trabajos en segundo plano. jobsEl comando los enumerará. (Asumiendo bashcomo el caparazón.)
Ruslan

44
Voto por el método ^ z (y más tarde fg), porque esto se puede usar en casi todos los procesos de shell: no es una cosa vim, es un truco de shell de cómo usar que es increíblemente útil en otros contextos.
dman

35

En vim, simplemente escriba:

:!sh

:!lanza un proceso externo, en este caso sh, otro shell. El control volverá a vim una vez que salga del shell. Si desea utilizar el shell simultáneamente con vim, agregue &al final del comando sh:

:!sh&

99
O simplemente usar :shell.
wchargin

2
Esta es la mejor respuesta para la mayoría de los propósitos.
Frank Conry

Eso es bueno, pero ¿qué pasa cuando el comando ejecuta un servidor, http-servere imprime los registros que quiero ver? Me gustaría poder cambiar a mis archivos, hacer ediciones y luego volver a los registros.
Costa

21

Puede usar el :shellcomando (o la forma abreviada :sh). De :help :shell:

Este comando inicia un shell. Cuando el shell sale (después del comando "salir") vuelve a Vim. El nombre del comando shell proviene de la opción 'shell'.

Por defecto, en Ubuntu, esto te dará bash. escriba exitpara volver a vim cuando haya terminado.


8

Desde vim reciente ahora puede hacer:

:terminal

Esto se agregó inicialmente en Vim 8.0.693 , pero con muchos errores. Ver :help terminal:

WARNING: THIS IS ONLY PARTLY IMPLEMENTED, ANYTHING CAN STILL CHANGE

The terminal feature is optional, use this to check if your Vim has it: 
        echo has('terminal')
If the result is "1" you have it.   

[...]

The terminal feature requires the +multi_byte, +job and +channel features.

==============================================================================
1. Basic use                                            terminal-use

This feature is for running a terminal emulator in a Vim window.  A job can be
started connected to the terminal emulator. For example, to run a shell: 
     :term bash

Or to run a debugger: 
     :term gdb vim

The job runs asynchronously from Vim, the window will be updated to show
output from the job, also  while editing in any other window.

7

Como complemento a todas las respuestas.

Puede instalar el complemento ConqueTerm

Este complemento proporciona la capacidad de ejecutar programas interactivos dentro de los búferes vim.

Después de la instalación, puede agregar estas 2 líneas a su .vimrc:

:nnoremap <S-w> :q!<CR>
:nnoremap <S-t> :ConqueTermSplit bash<CR>

Y podrá ejecutar bashpresionando Shift+ T, y cerrar la pestaña Conque actual presionando Shift+W

Es perfecto si necesita abrir / cerrar rápidamente bash.

Aquí hay gif que muestra cómo se ve


¿puedes considerar actualizar las publicaciones? Los enlaces que mencionó parecen obsoletos
ggulgulia

4

Otra opción con pantalla o byobu es abrir una pestaña dentro de esos programas. Estos programas hacen que sea bastante fácil mantener abierto un shell cq de sesión terminal y cambiar entre esas pantallas con el teclado.


1

¡Con la nueva versión de vim 8.1 todo lo que necesitas hacer es solo :terminaly listo! (esto está incorporado)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.