Как временно выйти из Vim и вернуться назад


304

Как я мог выйти из Vim, а не :qвернуться и продолжить редактирование?

Ответы:


572

Предполагая, что терминал Vim имеет вид * nix:

Чтобы приостановить ваш работающий Vim

Ctrl + Z

приостановит процесс и вернется к вашей оболочке

fg

возобновит (довести до е руды г раунда) приостановленного Vim.

Для запуска новой оболочки

Запустите подоболочку, используя:

:sh

(как настроено)

:set shell?

или

:!bash

с последующим:

Ctrl+ D(или exit, но зачем так много печатать?)

убить раковину и вернуться к Виму.


5
psдля просмотра процессов переднего плана unix.stackexchange.com/questions/6115/…
Влад Винников

1
Что делать, если я хочу продолжить работу моего сервера во время редактирования моего файла. Например, допустим, я делаю nodemon app.js(nodemon обновляет сервер для редактирования файлов для вас), а затем я хочу вернуться к редактированию vim. Могу ли я сделать это без двух отдельных окон терминала?
Коста

5
или jobsпосетить процессы переднего плана с (для меня) более читаемым названием. Затем, например, fg %2выбрать второй.
изоморфизм

Если это не работает для вас и control-zдействует как «отмена», проверьте ваш vimrc, чтобы увидеть, behave mswinприсутствует ли он. Если это удалить его и control-zбудет работать
schuess

3
в окнах вы можете вернуться к vim, если exit
наберете

107

Вы можете использовать :shдля выхода в свою оболочку по умолчанию, а затем набрав $ exitв командной строке, вы вернетесь в Vim.


1
Я хотел бы поднять это сложнее. Именно поэтому: оболочка существует.
Рэнди Моррис

8
Если честно, иногда вам нужна та же среда, а не среда под-оболочки. Итак, если вы ищете изменения переменных среды для полного выхода из Vim, вам понадобится CTRL-z /: sus.
Танго Браво

Можно использовать, $ psчтобы определить, не находимся ли мы в под-оболочке vim перед вызовом, $ exitчтобы избежать случайного закрытия терминала. Нашел это здесь (я не пробовал индикатор подсказки, упомянутый на сайте).
Даниил


14

Если вы работаете в системе Unix, Ctrl+ Zприостановит Vim и выдаст вам оболочку.

Типа, fgчтобы вернуться. Обратите внимание, что Vim создает файл подкачки при редактировании, и приостановка Vim не удаляет этот файл (вы не выходите из Vim в конце концов). На тупых терминалах этот метод был довольно стандартным для циклов редактирования-компиляции-редактирования с использованием vi . Я только что узнал, что для меня gVim сводит к минимуму при наборе текста Z.


13

Вы также можете сделать это, :susчтобы попасть в раковину и обратно fg.


5

Есть несколько способов выйти из Vim и сделать все то же самое, когда вы вернетесь. В самом Vim есть очень хорошая документация, объясняющая, как это можно сделать. Вы можете использовать следующую команду в vim для доступа к соответствующей странице справки::help usr_21

Чтобы дать вам краткое резюме, вот различные методы выхода и возврата с вашим целым сеансом:

  1. Приостановить и возобновить - Вы фактически не выходите из Vim с этим; Вы просто скрываете свою сессию в фоновом режиме, пока она вам не понадобится. Если вы перезагрузите компьютер или введете команду kill для Vim, вы потеряете сеанс. Это хорошо для случаев, когда вы хотите временно переключиться на другую задачу, но если это так, то вы можете использовать утилиту GNU Screen .

  2. Сессии - это верный способ сохранить ваш сеанс между экземплярами Vim. Даже если вы действительно выйдете из Vim, ваша сессия будет там для вас, когда вы вернетесь. Это, наверное, то, что вы ищете.


5

Чтобы расширить ответ пользователя Zen , вы можете добавить следующую строку в ваш ~/.vimrcфайл, чтобы быстро переключаться между Bash и Vim:

noremap <C-d> :sh<cr>

пять лет спустя я просто хотел бы упомянуть, что использование Cd, вероятно, плохой совет, поскольку оно переписывает поведение Vim по умолчанию. ctrl-d прокручивает окно в буфер по умолчанию. см. vimdoc.sourceforge.net/htmldoc/scroll.html#CTRL-D
xaa

3

Просто вставьте fgи вернитесь к вашей последней приостановленной программе.


3

Если вы используете Neovim , вы можете сделать следующее:

  • :terminal Команда вызвать окно терминала.
  • Делай свой терминал
  • Введите, exitчтобы убить процесс терминала
  • Нажмите любую клавишу, чтобы вернуться к Neovim

0

Если вы не возражаете против использования мыши:

  • Запустите свой терминал,
  • выберите файл,
  • выберите Открыть вкладку .

Это создает новую вкладку в терминале, на которой вы можете запустить Vim. Теперь используйте вашу мышь, чтобы перейти к / от терминала. Я предпочитаю это вместо того, чтобы всегда вводить ( :shellи выходить).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.