Comment quitter temporairement Vim et revenir en arrière

304

Comment pourrais-je quitter Vim, pas :q, puis revenir en arrière pour continuer l'édition?

Ricky
la source

Réponses:

572

En supposant Vim terminal sur une saveur de * nix:

Pour suspendre votre Vim en cours d'exécution

Ctrl + Z

suspendra le processus et reviendra à votre shell

fg

reprendra (apporter à f minerai g ronde) de votre suspension Vim.

Pour démarrer un nouveau shell

Démarrez un sous-shell en utilisant:

:sh

(tel que configuré par)

:set shell?

ou

:!bash

suivi par:

Ctrl+ D(ou exit, mais pourquoi taper autant?)

pour tuer l'obus et retourner à Vim.

Zen
la source
5
pspour afficher les processus de premier plan unix.stackexchange.com/questions/6115/…
Vlad Vinnikov
1
Que faire si je souhaite continuer à exécuter mon serveur pendant la modification de mon fichier. Par exemple, disons que je le fais nodemon app.js(nodemon rafraîchit le serveur sur les modifications de fichiers pour vous) et ensuite je veux revenir à mon édition vim. Puis-je le faire sans deux fenêtres de terminal distinctes?
Costa
5
ou jobspour visiter les processus de premier plan avec un titre (pour moi) plus lisible. Puis par exemple fg %2pour sélectionner le second.
isomorphismes
Si cela ne fonctionne pas pour vous et control-zagit comme «annuler», vérifiez votre vimrc pour voir s'il behave mswinest présent. Si c'est le supprimer et control-zfonctionnera
Schuess
3
dans les fenêtres, vous pouvez revenir à vim si vous tapezexit
JonnyRaa
107

Vous pouvez utiliser :shpour quitter votre shell par défaut, puis taper $ exità l'invite du shell vous ramènera à Vim.

Pierre-Antoine LaFayette
la source
1
J'aimerais pouvoir voter plus fort. C'est exactement pourquoi: shell existe.
Randy Morris
8
Pour être juste, vous voulez parfois le même environnement, pas un environnement sous-shell. Donc, si vous recherchez des modifications des variables d'environnement lorsque vous quittez complètement Vim, vous voudrez CTRL-z /: sus.
Tango Bravo
Peut être utilisé $ pspour savoir si nous sommes dans un sous-shell vim avant d'appeler $ exitpour éviter de fermer le terminal accidentellement. Trouvé ceci ici (je n'ai pas essayé l'indicateur rapide mentionné sur le site Web).
Daniel
34

Vous pouvez passer temporairement en mode shell en:

:! <command>

tel que

:! ls
Jay Zeng
la source
14

Si vous êtes sur un système Unix, Ctrl+ Zsuspendra Vim et vous donnera un shell.

Tapez fgpour revenir en arrière. Notez que Vim crée un fichier d'échange lors de la modification et la suspension de Vim ne supprimera pas ce fichier (vous ne quittez pas Vim après tout). Sur les terminaux stupides, cette méthode était assez standard pour les cycles d'édition-compilation-édition utilisant vi . Je viens de découvrir que pour moi, gVim minimise la frappe Z.

Alok Singhal
la source
13

Vous pouvez également le faire en :sustombant dans la coque et en revenant fg.

solotim
la source
5

Il existe plusieurs façons de quitter Vim et d'avoir tout de même à votre retour. Il existe une très bonne documentation dans Vim lui-même expliquant les différentes manières de procéder. Vous pouvez utiliser la commande suivante dans vim pour accéder à la page d'aide appropriée::help usr_21

Pour vous donner un bref résumé, voici les différentes méthodes pour quitter et revenir avec votre session intacte:

  1. Suspendre et reprendre - Vous ne quittez pas réellement Vim avec cela; vous masquez simplement votre session en arrière-plan jusqu'à ce que vous en ayez besoin. Si vous réinitialisez votre ordinateur ou exécutez une commande kill sur Vim, vous perdrez votre session. C'est bon pour quand vous voulez passer temporairement à une autre tâche, mais si c'est le cas, vous voudrez peut-être plutôt utiliser l' utilitaire GNU Screen .

  2. Sessions - C'est le véritable moyen de sauvegarder votre session entre les instances de Vim. Même si vous avez vraiment quitté Vim, votre session sera là pour vous à votre retour. C'est probablement ce que vous recherchez.

Suisse
la source
5

Pour étendre la réponse de l' utilisateur Zen , vous pouvez ajouter la ligne suivante dans votre ~/.vimrcfichier pour permettre un basculement rapide entre Bash et Vim:

noremap <C-d> :sh<cr>
xaa
la source
cinq ans plus tard, je voudrais juste mentionner que l'utilisation de Cd est probablement un mauvais conseil car elle écrase le comportement par défaut de Vim. ctrl-d faire défiler la fenêtre vers dans le tampon par défaut. voir vimdoc.sourceforge.net/htmldoc/scroll.html#CTRL-D
xaa
3

Il vous suffit de vous inscrire fget de revenir à votre dernier programme suspendu.

falcucci
la source
3

Si vous utilisez Neovim , vous pouvez effectuer les opérations suivantes:

  • :terminal pour afficher une fenêtre de terminal.
  • Faites vos trucs terminaux
  • Type exit pour tuer le processus terminal
  • Appuyez sur n'importe quelle touche pour revenir à Neovim
loeschg
la source
0

Si cela ne vous dérange pas d'utiliser votre souris un peu:

  • Démarrez votre terminal,
  • sélectionner un fichier,
  • sélectionnez Ouvrir l'onglet .

Cela crée un nouvel onglet sur le terminal sur lequel vous pouvez exécuter Vim. Utilisez maintenant votre souris pour passer de / vers le terminal. Je préfère cela au lieu de toujours devoir taper ( :shellet quitter).

Pius IK
la source