Как выйти из редактора Vim?

Я застрял и не могу сбежать. Это говорит:

"type :quit<Enter> to quit VIM"

Но когда я набираю текст, он просто появляется в теле объекта.

17 ответов

Решение

Нажмите клавишу Esc, чтобы войти в "Нормальный режим". Тогда вы можете напечатать : войти в "Режим командной строки". Двоеточие (:) появится внизу экрана, и вы можете ввести одну из следующих команд. Чтобы выполнить команду, нажмите клавишу Enter.

  • :q бросить курить :quit)
  • :q! выйти без сохранения (сокращение от :quit!)
  • :wq написать и выйти
  • :wq! для записи и выхода, даже если файл имеет только разрешение на чтение (если файл не имеет разрешения на запись: принудительная запись)
  • :x написать и выйти (аналогично :wq, но пишите только если есть изменения)
  • :exit написать и выйти (так же, как :x)
  • :qa бросить все :quitall)
  • :cq выйти без сохранения и заставить Vim вернуть ненулевую ошибку (т.е. выйти с ошибкой)

Вы также можете выйти из Vim напрямую из "Командного режима", набрав ZZ сохранить и выйти (так же, как :x) или же ZQ просто выйти (так же, как :q!). (Обратите внимание, что дело здесь важно. ZZ а также zz не значит одно и то же.)

Vim имеет обширную помощь - что вы можете получить доступ с :help Команда - где вы можете найти ответы на все ваши вопросы и учебник для начинающих.

Картинки стоят тысячи команд и опций Unix:

Введите описание изображения здесь

Я рисую это своим студентам каждый семестр, и они, кажется, потом понимают vi.

vi - конечный автомат с тремя состояниями.

После запуска vi переходит в режим КОМАНДЫ, где вы можете слепо набирать короткие команды из нескольких символов. Вы знаете, что делаете; это не для любителей.

Если вы хотите на самом деле редактировать текст, вы должны перейти в режим INSERT с помощью одной односимвольной команды:

  • i: перейти на INSERT вместо курсора
  • I: перейти в режим INSERT в начале строки
  • A: добавить после курсора
  • A: добавить в конце строки
  • o: открыть новую строку под текущей строкой
  • O: открыть новую строку вместо текущей

Теперь отвечаю на вопрос: выход.

Вы можете выйти из vi из режима EX:

  • q: если вы не сделали никаких изменений или сохранили их заранее
  • q!: игнорирует любые модификации и выходит
  • WQ: сохранить и выйти
  • х: это равно WQ

w а также x принять параметр имени файла. Если вы запустили vi с именем файла, вам не нужно указывать его здесь снова.

Наконец, самое важное: как добраться до режима EX?

Режим EX предназначен для длинных команд, которые вы можете увидеть, набрав в нижней строке экрана. В режиме КОМАНДЫ вы толкаете двоеточие, :, и в нижней строке появится двоеточие, где вы можете ввести вышеуказанные команды.

В режиме INSERT вам нужно нажать ESC, то есть кнопку Escape, перейти в режим COMMAND, а затем:, чтобы перейти в режим EX.

Если вы не уверены, нажмите ESC, и это приведет вас в командный режим.

Итак, надежный метод - ESC-:-x-Enter, который сохраняет ваш файл и завершает работу.

Прежде чем вводить команду, нажмите клавишу Esc. После ввода нажмите " Return" для подтверждения.

Esc завершает текущую команду и переключает Vim в нормальный режим. Теперь, если вы нажмете :, : появится в нижней части экрана. Это подтверждает, что вы на самом деле вводите команду, а не редактируете файл.

Большинство команд имеют сокращения, а необязательные части заключены в квадратные скобки: c[ommand],

Команды, отмеченные *, предназначены только для Vim (не реализованы в Vi).

Безопасный выход (не выполняется, если есть несохраненные изменения):

  • :q[uit] Выйти из текущего окна. Выйдите из Vim, если это последнее окно. Это терпит неудачу, когда изменения были сделаны в текущем буфере.
  • :qa[ll] * Закройте все окна и Vim, если нет каких-либо буферов, которые были изменены.

Promit-quit (запрашивает, есть ли несохраненные изменения)

  • :conf[irm] q[uit] * Выйти, но дать подсказку, когда есть некоторые буферы, которые были изменены.
  • :conf[irm] xa[ll] * Запишите все измененные буферы и выйдите из Vim. Вызовите подсказку, когда некоторые буферы не могут быть записаны.

Записать (сохранить) изменения и выйти:

  • :wq Запишите текущий файл (даже если он не был изменен) и выйдите. Сбой записи, когда файл доступен только для чтения или у буфера нет имени. :wqa[ll] * для всех окон.
  • :wq! То же самое, но пишет даже файлы только для чтения. :wqa[ll]! * для всех окон.
  • :x[it], ZZподробностями). Запишите файл, только если он был изменен, и выйдите, :xa[ll] * для всех окон.

Отменить изменения и выйти:

  • :q[uit]!ZQ * Выход без записи, также когда видимые буферы имеют изменения. Не выходит при смене скрытых буферов.
  • :qa[ll]! *, :quita[ll][!] * Выйдите из Vim, все изменения в буферах (включая скрытые) будут потеряны.

Нажмите Return, чтобы подтвердить команду.

Этот ответ не ссылается на все команды и аргументы Vim write и quit. Действительно, они упоминаются в документации Vim.

Vim имеет обширную встроенную помощь, типа Esc :help Вернитесь, чтобы открыть его.

Этот ответ был вдохновлен другим, изначально созданным @dirvine и отредактированным другими пользователями SO. Я включил больше информации из справочника Vim, комментариев SO и некоторых других источников. Различия для Vi и Vim также отражены.

Если вы хотите выйти без сохранения в Vim и заставить Vim возвращать ненулевой код выхода, вы можете использовать :cq,

Я использую это все время, потому что я не могу быть обеспокоен мизинцем !, Я часто передаю в Vim вещи, которые не нужно сохранять в файле. У нас также есть странная оболочка SVN на работе, которая должна быть закрыта с ненулевым значением, чтобы прервать регистрацию.

Это для наихудшего сценария выхода из Vim, если вы просто хотите выйти, не представляете, что вы сделали, и вам все равно, что произойдет с файлами, которые вы открыли.

Ctrl-cEnterEnterviВведитеCtrl- \Ctrl-n:qa!Войти

Это должно вытащить тебя большую часть времени.

Несколько интересных случаев, когда вам нужно что-то вроде этого:

  • iCtrl-Ovg (вы входите в режим вставки, затем в визуальный режим и затем в режим ожидания оператора)

  • QappendВойти

  • iCtrl-OgQCtrl-R=Ctrl-k(спасибо porges за этот случай)

  • :set insertmode(это тот случай, когдаCtrl- \Ctrl-n возвращает вас в обычный режим)


Изменить: Этот ответ был исправлен из-за случаев выше. Это было:

EscEscEsc:qa!Войти

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

viВойти:qa!Войти

Итак, полная команда: "Я не хочу знать, что я сделал, и я не хочу ничего сохранять, я просто хочу сейчас!" было бы

viВведитеEscEscEsc:qa!Войти

Если вам нужно выйти из Vim в легком режиме (при использовании -y опция) вы можете войти в нормальный режим Vim, нажав Ctrl + L, и тогда любой из нормальных вариантов выхода будет работать.

Vim имеет три режима работы: режим ввода, командный режим и режим Ex.

Режим ввода - все, что вы вводите, все нажатия клавиш отображаются на экране.

Командный режим или режим Escape - все, что вы вводите в этом режиме, интерпретируется как команда.

Ex mode - это другой редактор, ex. Это линейный редактор. Он работает на строку или на основе ряда строк. В этом режиме в нижней части экрана отображается значок :. Это бывший редактор.

Чтобы выйти из Vim, вы можете выйти, находясь в режиме ex или в командном режиме. Вы не можете выйти из Vim, когда находитесь в режиме ввода.

Выход из режима ex

  1. Вы должны быть уверены, что находитесь в командном режиме. Для этого просто нажмите клавишу Esc.

  2. Перейдите в режим ex, нажав клавишу :

  3. Для выхода используйте любую из следующих комбинаций в режиме ex:

    :q - уволиться:q! - выйти без сохранения:wq - сохранить и выйти или написать и выйти:wq! - так же, как wq, но принудительная запись в случае, если права доступа к файлу доступны только для чтения:x - написать и выйти:qa - бросить все. полезно, когда несколько файлов открываются как: vim abc.txt xyz.txt

Выход из командного режима

  1. Нажмите клавишу выхода. Вы, вероятно, уже сделали это, если находитесь в командном режиме.

  2. Пресса заглавная ZZ (shift zz) - сохранить и выйти

  3. Пресса заглавная ZQ (shift zq) - выход без сохранения.

После нажатия ESC (или cmd + C на моем компьютере) вы должны нажать : для появления командной строки. Затем вы можете ввести quit,

Вы можете обнаружить, что машина не позволит вам выйти, потому что ваша информация не была сохранена. Если вы все равно хотите выйти, введите ! сразу после выхода (т.е. :quit!).

Я получил Vim, установив клиент Git в Windows. :q не выйдет из Vim для меня. :exit сделал однако...

Я хотел бы добавить свои два цента на этом. Вопрос был задан здесь.

q Команда с номером закрывает данное разделение в этой позиции.

:q<split position> или же :<split position>q закроет разделение в этой позиции.

Допустим, ваш макет окна Vim выглядит следующим образом:

-------------------------------------------------
|               |               |               |
-------------------------------------------------
|               |               |               |
|               |               |               |
|    Split 1    |    Split 2    |     Split 3   |
|               |               |               |
-------------------------------------------------

Если вы запустите q1 команда, это закроет первый сплит. q2 закроет второй сплит и наоборот.

Порядок позиции разделения в команде quit не имеет значения. :2q или же :q2 закроет второй сплит.

Если позиция разделения, которую вы передаете команде, больше, чем количество текущих разделений, она просто закроет последнее разделение.

Например, если вы запустите q100 в приведенном выше окне настройки, где есть только три разделения, оно закроет последний разделить (Разделение 3).

Один гарантированный способ - убить порт, на котором запущен vim.

      ! kill - 9 $(ps | grep vim | cut -d " " -f 1)

В любом из четырех режимов: вставка , визуальный , командный или режим командной строки (ex), нажмите эту кнопку, чтобы сохранить изменения, а затем выйдите из vim:

Alt-Z Z

То есть нажать: alt + shift + zтогда shift + z

Почему это работает: из режима вставки и, по-видимому, других режимов вы можете выйти в командный режим и выполнить команду, удерживая клавишу Alt с любым командным символом. Второй Alt+Shift+Z игнорируется, поэтому вы должны отпустить Alt, но сохранить Shift. Работайте над мышечной памятью! :-)

Q-первый против двоеточия-первый

Многие знают о стратегии выхода двоеточие-q. Но для дополнительной стратегии и потомства, вот метод q-colon-iq:

В Normalрежим вы можете ввести:

      q:iq<enter>

Если вы внимательно посмотрите и прищуритесь, вы почти сможете прочитать эту команду вслух как «быстро», так как это медленный способ выхода.

(Примечание: несмотря на мою попытку пошутить, это работает!)

Вот как вы можете выйти из Vim. Нажмите Ctrl & 'Z', затем 'X' и 'C'.

Ctrl -> +Z -> +X -> +C

Это на самом деле невероятно легко бросить vim,

Нажмите Escape, дважды обернитесь, пните кота, приготовьте идеальную чашку чая, пробежите четыре минуты, поднимитесь на Эверест, запустите Кессель-Бег до 12 парсеков, захватите железный трон, достигните мира во всем мире, нажмите :qВойти

:q для довольно :wq сохранить и довольно :q! бросить, не разорвавшись

Нажав Esc (или Ctrl + C), вы набираете :q где q обозначает quit,

Вы можете ожидать, что машина не позволит вам выйти, потому что вы не сохранили то, над чем работаете.

В этом случае вы должны ввести :wq сохранить и выйти или :q! для выхода без сохранения.

Другие вопросы по тегам