Jak tymczasowo wyjść z Vima i wrócić

302

Jak mogę wyjść z Vima, a nie :qwrócić, aby kontynuować edycję?

Ricky
źródło

Odpowiedzi:

570

Zakładając, że terminal Vim ma smak * nix:

Aby zawiesić działającego Vima

Ctrl + Z

zawiesi proces i wróci do powłoki

fg

powróci (przynieść f ore g odwrotnie) swoim zawieszone vim.

Aby rozpocząć nową powłokę

Uruchom podpowłokę, używając:

:sh

(zgodnie z konfiguracją)

:set shell?

lub

:!bash

śledzony przez:

Ctrl+ D(lub exit, ale po co tyle pisać?)

zabić pocisk i wrócić do Vima.

zen
źródło
5
psprzeglądać procesy pierwszego planu unix.stackexchange.com/questions/6115/…
Vlad
1
Co zrobić, jeśli chcę kontynuować uruchamianie serwera podczas edytowania pliku. Na przykład, powiedzmy, że robię nodemon app.js(nodemon odświeża serwer w przypadku edycji pliku dla ciebie), a następnie chcę wrócić do mojej edycji vim. Czy mogę to zrobić bez dwóch osobnych okien terminala?
Costa
5
lub jobsodwiedzić procesy na pierwszym planie z (dla mnie) bardziej czytelnym tytułem. Następnie np. fg %2Wybierz drugi.
izomorfizmy
Jeśli to nie działa dla ciebie i control-zdziała jak „cofnij”, sprawdź vimrc, aby sprawdzić, czy behave mswinjest obecny. Jeśli zostanie usunięty i control-zzadziała
schuess
3
w Windows możesz wrócić do vima, jeśli wpiszeszexit
JonnyRaa
107

Możesz użyć, :shaby wyjść do domyślnej powłoki, a następnie wpisanie $ exitpolecenia zachęty spowoduje powrót do Vima.

Pierre-Antoine LaFayette
źródło
1
Chciałbym móc głosować za tym mocniej. Właśnie dlatego: shell istnieje.
Randy Morris,
8
Aby być uczciwym, czasami potrzebujesz tego samego środowiska, a nie środowiska podpowłoki. Tak więc, jeśli szukasz zmian w zmiennych środowiskowych, po całkowitym wyjściu z Vima, będziesz chciał CTRL-z /: sus.
Tango Bravo,
Może użyć, $ psaby sprawdzić, czy znajdujemy się w podpowłoce vim przed wywołaniem, $ exitaby uniknąć przypadkowego zamknięcia terminala. Znalazłem to tutaj (nie wypróbowałem wskaźnika podpowiedzi wymienionego na stronie).
Daniel
34

Możesz tymczasowo przełączyć na tryb powłoki przez:

:! <command>

Jak na przykład

:! ls
Jay Zeng
źródło
14

Jeśli korzystasz z systemu uniksowego, Ctrl+ Zzawiesi Vima i da ci powłokę.

Wpisz, fgaby wrócić. Zauważ, że Vim tworzy plik wymiany podczas edycji, a zawieszenie Vima nie usunie tego pliku (mimo wszystko nie wychodzisz z Vima). Na głupich terminalach ta metoda była dość standardowa dla cykli edycji-kompilacji-edycji przy użyciu vi . Właśnie się dowiedziałem, że dla mnie gVim minimalizuje pisanie Z.

Alok Singhal
źródło
13

Możesz to również zrobić, :suswpadając w powłokę i cofając się fg.

solotim
źródło
5

Istnieje kilka sposobów na wyjście z Vima i posiadanie tego samego po powrocie. W samym Vimie znajduje się bardzo dobra dokumentacja wyjaśniająca różne sposoby, w jakie można to zrobić. Aby uzyskać dostęp do odpowiedniej strony pomocy, możesz użyć następującego polecenia w vimie::help usr_21

Aby dać ci krótkie podsumowanie, oto różne metody wychodzenia i powrotu z nienaruszoną sesją:

  1. Zawieś i wznów - W rzeczywistości nie rezygnujesz z Vima; po prostu ukrywasz sesję w tle, dopóki jej nie potrzebujesz. Jeśli zresetujesz komputer lub wydasz polecenie zabicia Vima, stracisz sesję. Jest to przydatne, gdy chcesz tymczasowo przełączyć się na inne zadanie, ale jeśli tak jest, możesz zamiast tego skorzystać z narzędzia GNU Screen .

  2. Sesje - To jest prawdziwy sposób zapisywania sesji między instancjami Vima. Nawet jeśli naprawdę opuścisz Vima, twoja sesja będzie dla ciebie dostępna po powrocie. To jest prawdopodobnie to, czego szukasz.

szwajcarski
źródło
5

Aby przedłużyć user Zen „s odpowiedź , można dodać następujący wiersz w ~/.vimrcpliku, aby umożliwić szybkie przełączanie pomiędzy bash i Vima:

noremap <C-d> :sh<cr>
xaa
źródło
pięć lat później chciałbym tylko wspomnieć, że używanie Cd jest prawdopodobnie złą radą, ponieważ zastępuje domyślne zachowanie Vima. ctrl-d okno przewijania domyślnie w buforze. patrz vimdoc.sourceforge.net/htmldoc/scroll.html#CTRL-D
xaa
3

Po prostu włóż fgi wróć do ostatnio zawieszonego programu.

falcucci
źródło
3

Jeśli używasz Neovim , możesz wykonać następujące czynności:

  • :terminal polecenie, aby wyświetlić okno terminala.
  • Rób rzeczy z terminalu
  • Wpisz, exitaby zabić proces terminalowy
  • Naciśnij dowolny klawisz, aby powrócić do Neovim
loeschg
źródło
0

Jeśli nie masz nic przeciwko użyciu myszy:

  • Uruchom terminal
  • Wybierz plik,
  • wybierz Otwórz kartę .

Spowoduje to utworzenie nowej karty w terminalu, na której można uruchomić Vima. Teraz użyj myszki, aby przejść do / z terminala. Wolę to zamiast zawsze pisać ( :shelli wychodzić).

Pius IK
źródło