Come uscire temporaneamente da Vim e tornare indietro


303

Come potrei uscire da Vim, no :q, e poi tornare indietro per continuare la modifica?

Risposte:


571

Supponendo che il terminale Vim abbia un sapore di * nix:

Per sospendere la tua corsa a Vim

Ctrl + Z

sospenderà il processo e tornerà alla tua shell

fg

riprenderà (portare a f minerale g turno) il vostro Vim sospesa.

Per iniziare una nuova shell

Avviare una subshell usando:

:sh

(come configurato da)

:set shell?

o

:!bash

seguito da:

Ctrl+ D(o exit, ma perché digitare così tanto?)

per uccidere il guscio e tornare a Vim.


5
psper visualizzare i processi in primo piano unix.stackexchange.com/questions/6115/…
Vlad Vinnikov,

1
Cosa succede se desidero continuare a eseguire il mio server mentre modifico il mio file. Ad esempio, diciamo che lo faccio nodemon app.js(nodemon aggiorna il server sulle modifiche ai file per te) e quindi voglio tornare alla mia modifica di VIM. Posso farlo senza due finestre terminali separate?
Costa

5
o jobsper visitare i processi in primo piano con un titolo (per me) più leggibile. Quindi ad es. fg %2Per selezionare il secondo.
isomorfismi,

Se questo non funziona per te e control-zfunziona come "annulla", controlla il tuo vimrc per vedere se behave mswinè presente. Se è rimosso e control-zfunzionerà
schuess

3
in Windows puoi tornare a VIM se digitiexit
JonnyRaa

107

È possibile utilizzare :shper uscire dalla shell predefinita, quindi digitando $ exital prompt della shell si tornerà a Vim.


1
Vorrei poter votare più duramente. Questo è esattamente il motivo: esiste la shell.
Randy Morris,

8
Per essere onesti, a volte vuoi lo stesso ambiente, non un ambiente sub-shell. Quindi, se stai cercando modifiche alle variabili di ambiente per quando esci completamente da Vim, ti consigliamo di CTRL-z /: sus.
Tango Bravo,

Puoi usare $ psper scoprire se siamo in una sub-shell vim prima di chiamare $ exitper evitare di chiudere accidentalmente il terminale. Ho trovato questo qui (non ho provato l'indicatore rapido menzionato sul sito Web).
Daniel,

34

È possibile passare temporaneamente alla modalità shell:

:! <command>

ad esempio

:! ls

14

Se usi un sistema Unix, Ctrl+ Zsospenderà Vim e ti darà una shell.

Digitare fgper tornare indietro. Nota che Vim crea un file di scambio durante la modifica e la sospensione di Vim non eliminerebbe quel file (dopotutto non stai uscendo da Vim). Su terminali stupidi, questo metodo era piuttosto standard per i cicli di modifica-compilazione-modifica usando vi . Ho appena scoperto che per me gVim riduce al minimo la digitazione Z.


13

Puoi anche farlo :suscadendo nella shell e viceversa fg.


5

Esistono diversi modi per uscire da Vim e avere tutto uguale al tuo ritorno. Vi è un'ottima documentazione all'interno dello stesso Vim che spiega i vari modi in cui ciò può essere fatto. È possibile utilizzare il seguente comando in vim per accedere alla relativa pagina di aiuto::help usr_21

Per darti un breve riepilogo, ecco i diversi metodi per uscire e tornare con la sessione intatta:

  1. Sospendi e riprendi - In realtà non esci da Vim con questo; semplicemente nascondi la sessione in background fino a quando non ti serve. Se ripristini il computer o esegui un comando kill su Vim, perderai la sessione. Questo è utile per quando si desidera passare temporaneamente a un'altra attività, ma in tal caso, è consigliabile esaminare invece l' utilità GNU Screen .

  2. Sessioni: questo è il vero modo di salvare la sessione tra istanze di Vim. Anche se hai lasciato Vim, la tua sessione sarà lì per te al tuo ritorno. Questo è probabilmente quello che stai cercando.


5

Per estendere la risposta dell'utente Zen , è possibile aggiungere la seguente riga nel ~/.vimrcfile per consentire la commutazione rapida tra Bash e Vim:

noremap <C-d> :sh<cr>

cinque anni dopo vorrei solo ricordare che l'uso di Cd è probabilmente un cattivo consiglio in quanto sovrascrive il comportamento predefinito di Vim. ctrl-d scoll finestra verso nel buffer di default. vedi vimdoc.sourceforge.net/htmldoc/scroll.html#CTRL-D
xaa

3

Basta inserire fge tornare al programma sospeso più di recente.


3

Se stai usando Neovim , puoi fare quanto segue:

  • :terminal comando per visualizzare una finestra del terminale.
  • Fai le tue cose terminali
  • Digitare exitper terminare il processo terminale
  • Premere un tasto qualsiasi per tornare a Neovim

0

Se non ti dispiace usare un po 'il mouse:

  • Avvia il tuo terminale,
  • seleziona un file,
  • seleziona Apri scheda .

Questo crea una nuova scheda sul terminale su cui è possibile eseguire Vim. Ora usa il mouse per spostarti da / verso il terminale. Preferisco questo invece di dover sempre digitare ( :shelled uscire).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.