5 способов выйти из Vim

Из любой ситуации есть минимум два выхода. © неизвестный автор

Очень просто жить, когда ты придумал цитату до того, как появился Vim.

Способ первый: не влезай – убьет

Врага нужно знать в лицо и поэтому для начала я расскажу в каких ситуациях вам может встретиться vim

Всё, больше никаких известных мне вариантов. Не так много, поэтому застраховаться довольно легко. Но не всегда полезно: vim или его предок vi могут оказаться единственными доступными редакторами на удалённом сервере. Конечно, nano там тоже будет, скорее всего, но, если честно, из него я первый раз вышел не быстрее чем из vim (потому что – кто читает инструкции написанные внизу экрана?!)

Способ второй: а вы перезагружать пробовали?

Удивительно, но большинство людей не знает, что если запустить vim не открывая никаких файлов, то прямо по центру экрана он покажет сплэш-скрин, с базовой информацией по командам

Publish 🗞/5 способов выйти из Vim 1/Untitled.png

Vim splash-screen

А еще в vim очень обширная система помощи, которая может рассказать о многих аспектах работы с редактором.

Publish 🗞/5 способов выйти из Vim 1/Untitled 1.png

Например :help quit покажет вот такую справку, в которой есть целая глава посвященная выходу, сохранению и выходу, выходу без сохранения и куче сопутствующих нюансов.

Publish 🗞/5 способов выйти из Vim 1/Untitled 2.png

Для подробного знакомства со справочной системой, как можно догадаться – есть команда :help help

Время для историй

Так получилось, что моё погружение в промышленное программирование прошло довольно странным образом: в один прекрасный момент, обучаясь в институте и реализуя алгоритмы сортировки на С в промышленных масштабах – я нашел какой-то курс лекций по Ruby on Rails, кажется на курсере.

Мне всегда было интересно попробовать сделать что-то в вебе, например блог, ведь у всех крутых чуваков есть своя страничка. Поэтому я взялся за прохождение курса, познакомился с ruby, и тут меня и ждал первый нюанс: лектор для написания кода использовал vim, рассказывал о каких-то штуках, которые называются "плагины" и за пару нажатий клавиш творил какую-то форменную магию.

А так как я ленивый, но любопытный, то я решил заодно и попробовать этот прикольный редактор (конечно прикольный, после Notepad++). На моей убунте, как оказалось уже был установленный vim, поэтому я радостно поменял конфиги, следуя примерам в интернете, скачал и установил пару плагинов, запустил.
Ну и, собственно, тут я первый раз погуглил – "how to exit vim"

Через пару дней всё это выглядело примерно так:

Untitled 3.png
Это картинка из интернета, потому что я боюсь погрязнуть в ностальгии и настройке вима, если возьмусь сделать это для статьи...

Следующие года полтора я фрилансил как RoR разработчик, писал в виме и со временем он правда стал привычным, удобным и комфортным. В том числе из-за очень развитой системы конфигурации и плагинов (с того времени – мне очень некомфортно пользоваться редакторами, где я не могу настроить всё под себя).

Способ третий: 😴

И если просто поспать и подождать пока vim выйдет сам – у вас не получится, то воспользовавшись комбинацией из zZz – вполне получится:

ZZ (Shift-z + Shift-z) – чтобы выйти, сохранив изменения

ZQ (Shift-z + Shift-q) – чтобы выйти не сохраняя изменения

Способ четвертый :wq

На самом деле большое количество руководств, статей и учебников (да, по vim есть учебники, а может и целый курс где-нибудь в университете), рекомендует думать о командах в vim, как о мнемонических правилах.

Если что-то связано с выходом (quit), то логично предположить, что это может быть
буква q.
И, на самом деле, – это работает, с большинством команд в vim:

Способ пятый!

Из-за того, что в vim можно полноценно запускать любые shell-команды, написав !, то очень легко просто завершить процесс редактора, послав ему сигнал SIGKILL:

Danger

Внимание, следующая команда закроет ВСЕ редакторы vim, и все не сохранённые изменения могут быть потеряны
:!killall -9 vim

Но эта же функциональность может быть полезна, например, если вы открыли на редактирование файл, который можно сохранить только от пользователя root, например файлы конфигов, nginx или sshd. Вы можете выйти из редактора и открыть его еще раз, но уже с sudo, а можете сделать необходимые изменения и написать: :w !sudo tee %
Этот трюк позволит сохранить файл не переоткрывая его, подробнее можно прочитать тут.

Когда ничего не помогло

В качестве вывода могу только сказать, что на вкус и цвет – все фломастеры разные.

Я считаю, что со временем программист понимает, что его любимый язык, редактор, сайт советов – это всего-лишь инструмент. И для разных задач существуют подходящие и неподходящие инструменты: я никому не пожелаю большой java-проект открывать не в IDEA, при этом фронтенд я пишу, пользуясь, VS Code.

Главное, что отличает хорошего программиста, – он может разобраться и использовать разные инструменты, эффективно их комбинируя.

Screen_Recording_2019-11-25_at_15.53.31.gif
Пример того, как я выполняю интерактивный ребейз :)
В ролях: vim, zsh, zsh-git-alias