Vim 8.1+ y Neovim incluyen una terminal integrada que ejecuta un shell real dentro de un buffer. Permite correr comandos, compilar y depurar sin salir del editor.
Abreviaciones de modos: N = Normal | I = Insert | V = Visual | C = Command | VB = Visual Block
Abrir la terminal
Modo
Comando
Acción
C
:term
Abre la terminal en la ventana actual
C
:term {cmd}
Abre la terminal ejecutando un comando específico
C
:vert term
Abre la terminal en un split vertical
C
:bel term
Abre la terminal en un split horizontal inferior
C
:tab term
Abre la terminal en un nuevo tab
C
:term ++rows=15
Abre la terminal con altura fija de 15 líneas
C
:term ++cols=80
Abre la terminal con ancho fijo de 80 columnas
C
:term ++close
Cierra el buffer automáticamente al salir del proceso
C
:term ++kill=term
Define la señal para matar el proceso al cerrar
Modos de la terminal
Modo
Descripción
Terminal-Job
Modo activo: el input va al proceso del shell
Terminal-Normal
Modo Vim normal sobre el buffer de la terminal
Modo
Comando
Acción
Terminal-Job
<Ctrl-w>N
Entra a Terminal-Normal mode
Terminal-Job
<Ctrl-w><Ctrl-n>
Alternativa para entrar a Terminal-Normal
Terminal-Normal
i
Regresa a Terminal-Job mode
Terminal-Normal
a
Regresa a Terminal-Job mode
Terminal-Job
<Ctrl-w>.
Envía <Ctrl-w> literal al proceso del shell
Terminal-Job
<Ctrl-w><Ctrl-c>
Envía <Ctrl-c> al proceso sin salir de Vim
Navegar y gestionar ventanas desde la terminal
Modo
Comando
Acción
Terminal-Job
<Ctrl-w>h
Mueve el foco al split de la izquierda
Terminal-Job
<Ctrl-w>j
Mueve el foco al split de abajo
Terminal-Job
<Ctrl-w>k
Mueve el foco al split de arriba
Terminal-Job
<Ctrl-w>l
Mueve el foco al split de la derecha
Terminal-Job
<Ctrl-w>w
Cicla al siguiente split
Terminal-Job
<Ctrl-w>q
Cierra la ventana de la terminal
Terminal-Job
<Ctrl-w>:
Abre Command mode sin salir de la terminal
Copiar y pegar entre terminal y buffers
Modo
Comando
Acción
Terminal-Normal
y
Copia texto seleccionado del buffer de terminal
Terminal-Normal
"{a}y
Copia al registro nombrado {a}
Terminal-Job
<Ctrl-w>"{ a}
Pega el contenido del registro {a} en el shell
Terminal-Job
<Ctrl-w>"*
Pega desde el clipboard del sistema al shell
Terminal-Normal
/patrón
Busca texto en el historial de la terminal
Ejecutar comandos externos sin abrir terminal
Modo
Comando
Acción
C
:!{cmd}
Ejecuta un comando externo y muestra la salida
C
:r !{cmd}
Inserta la salida del comando en el buffer
C
:.!{cmd}
Reemplaza la línea actual con la salida del comando
C
:%!{cmd}
Filtra todo el buffer por el comando externo
C
:'<,'>!{cmd}
Filtra la selección Visual por el comando externo
N
<Ctrl-z>
Suspende Vim y regresa al shell (reanudar con fg)
Gestión de jobs en background
Modo
Comando
Acción
C
:jobs
Lista los procesos activos en terminales abiertas
C
:term ++hidden {cmd}
Ejecuta un comando en terminal oculta (sin mostrarla)
C
ch_sendraw(job, 'texto')
Envía texto a un job desde Vimscript
Configuración útil
Modo
Comando
Acción
C
:set termwinsize=15x0
Fija el tamaño de la terminal a 15 filas
C
:set termwinkey=<Ctrl-w>
Define la tecla de escape hacia Vim (default)
C
:let g:terminal_ansi_colors=[...]
Personaliza la paleta de colores ANSI
Tips
<Ctrl-w>N para entrar a Terminal-Normal es el comando más importante: permite copiar output, buscar con / y navegar el historial sin salir de Vim.
:%!{cmd} convierte cualquier herramienta externa en un formateador de buffer: :%!python3 -m json.tool formatea JSON, :%!sort ordena líneas.
:'<,'>!{cmd} aplica el comando solo a la selección visual, útil para filtrar bloques específicos por sort, uniq, awk o cualquier utilidad Unix.
:term ++close evita que el buffer quede como [Process exited 0] al terminar; útil para comandos cortos que no necesitan revisión del output.
<Ctrl-w>: desde Terminal-Job mode permite ejecutar comandos de Vim (como :w o :bn) sin necesidad de cambiar de ventana ni salir del shell.