Cómo salir temporalmente de Vim y volver

303

¿Cómo podría salir de Vim, no :q, y luego volver para continuar editando?

Ricky
fuente

Respuestas:

571

Suponiendo que el terminal Vim tiene un sabor de * nix:

Para suspender tu carrera Vim

Ctrl + Z

suspenderá el proceso y volverá a su shell

fg

se reanudará (traer a f mineral g redondo) su Vim suspendido.

Para comenzar un nuevo shell

Comience una subshell usando:

:sh

(según lo configurado por)

:set shell?

o

:!bash

seguido por:

Ctrl+ D(o exit, pero ¿por qué escribir tanto?)

matar al caparazón y volver a Vim.

zen
fuente
55
pspara ver los procesos en primer plano unix.stackexchange.com/questions/6115/…
Vlad Vinnikov
1
¿Qué sucede si deseo continuar ejecutando mi servidor mientras edito mi archivo? Por ejemplo, digamos que sí nodemon app.js(nodemon actualiza el servidor en las ediciones de archivos para usted) y luego quiero volver a mi edición de vim. ¿Puedo hacer eso sin dos ventanas de terminal separadas?
Costa
55
o jobsvisitar los procesos en primer plano con un título (para mí) más legible. Entonces, por ejemplo, fg %2para seleccionar el segundo.
isomorfismos
Si esto no funciona para usted y control-zactúa como 'deshacer', verifique su vimrc para ver si behave mswinestá presente. Si se trata de quitarlo y control-zfuncionará
schuess
3
en windows puede volver a vim si escribeexit
JonnyRaa
107

Puede usar :shpara salir a su shell predeterminado y luego escribir $ exiten el indicador de shell le devolverá a Vim.

Pierre-Antoine LaFayette
fuente
1
Desearía poder votar más fuerte. Esto es exactamente por qué: shell existe.
Randy Morris
8
Para ser justos, a veces quieres el mismo entorno, no un entorno de sub-shell. Entonces, si está buscando cambios en las variables de entorno para cuando salga de Vim por completo, querrá CTRL-z /: sus.
Tango Bravo el
Se puede usar $ pspara averiguar si estamos en un sub-shell vim antes de llamar $ exitpara evitar cerrar el terminal accidentalmente. Encontré esto aquí (no he probado el indicador rápido mencionado en el sitio web).
Daniel
34

Puede cambiar al modo de shell temporalmente:

:! <command>

como

:! ls
Jay Zeng
fuente
14

Si está en un sistema Unix, Ctrl+ Zsuspenderá Vim y le dará un shell.

Escribe fgpara volver. Tenga en cuenta que Vim crea un archivo de intercambio mientras edita, y suspender Vim no eliminaría ese archivo (no está saliendo de Vim después de todo). En terminales tontas, este método era bastante estándar para los ciclos de edición-compilación-edición usando vi . Me acabo de enterar de que, para mí, gVim minimiza la escritura Z.

Alok Singhal
fuente
13

También puede hacerlo :suspara caer en la cáscara y volver fg.

solotim
fuente
5

Hay varias formas de salir de Vim y tener todo igual cuando regrese. Hay muy buena documentación dentro de Vim que explica las diversas formas en que esto se puede hacer. Puede usar el siguiente comando dentro de vim para acceder a la página de ayuda relevante::help usr_21

Para darle un breve resumen, estos son los diferentes métodos para salir y regresar con su sesión intacta:

  1. Suspender y reanudar: en realidad no sales de Vim con esto; simplemente oculta su sesión en segundo plano hasta que la necesite. Si reinicia su computadora o emite un comando kill a Vim, perderá su sesión. Esto es bueno para cuando desea cambiar a otra tarea temporalmente, pero si este es el caso, entonces puede considerar usar la utilidad GNU Screen .

  2. Sesiones: esta es la verdadera forma de guardar su sesión entre instancias de Vim. Incluso si realmente abandonas Vim, tu sesión estará allí para ti cuando regreses. Esto es probablemente lo que estás buscando.

suizo
fuente
5

Para ampliar la respuesta del usuario Zen , puede agregar la siguiente línea en su ~/.vimrcarchivo para permitir alternar rápidamente entre Bash y Vim:

noremap <C-d> :sh<cr>
xaa
fuente
cinco años después, me gustaría mencionar que usar Cd es probablemente un mal consejo ya que sobrescribe el comportamiento predeterminado de Vim. ctrl-d ventana de desplazamiento hacia en el búfer por defecto. ver vimdoc.sourceforge.net/htmldoc/scroll.html#CTRL-D
xaa
3

Simplemente fgingrese y regrese a su programa suspendido más recientemente.

falcucci
fuente
3

Si está usando Neovim , puede hacer lo siguiente:

  • :terminal comando para abrir una ventana de terminal.
  • Haz tus cosas terminales
  • Escribe exitpara matar el proceso terminal
  • Presione cualquier tecla para regresar a Neovim
loeschg
fuente
0

Si no te importa usar tu mouse un poco:

  • Comience su terminal,
  • seleccione un archivo,
  • seleccione Abrir pestaña .

Esto crea una nueva pestaña en el terminal en la que puede ejecutar Vim. Ahora use su mouse para desplazarse hacia / desde la terminal. Prefiero esto en lugar de tener que escribir siempre ( :shelly salir).

Pius IK
fuente