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

vim vi


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

"type :quit<Enter> to quit VIM"

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




Answer 1 dirvine


Попасть вEscключ для входа в «Нормальный режим». Затем вы можете ввести : для входа в «Режим командной строки». Двоеточие ( : ) будет отображаться в нижней части экрана , и вы можете ввести одну из следующих команд. Чтобы выполнить команду, нажмитеEnterkey.

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

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

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




Answer 2 Gergely


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

Enter image description here

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

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

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

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

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

Теперь,отвечая на вопрос:выходим.

Вы можете выйти из режима "ВИ" из режима "ВИ":

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

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

И,наконец,самое главное:как достичь режима EX?

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

Из режима INSERT необходимо нажать ESC,т.е.кнопку Escape,перейти в режим COMMAND,а затем:перейти в режим EX.

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

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




Answer 3 Nick Volynkin


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

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

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

Команды,помеченные '*',являются Vim-only (не реализованы на 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:helpReturnчтобы открыть его.

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




Answer 4 Sue Spence


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

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




Answer 5 Heikki Naski


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

Ctrl-cEnterEnterviEnterCtrl-\Ctrl-n:qa!Enter

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

Некоторые интересные случаи,когда тебе нужно что-то подобное:

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

  • QappendEnter

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

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


Редакция:Этот ответ был исправлен в связи с вышеизложенными случаями.Так было раньше:

EscEscEsc:qa!Enter

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

viEnter:qa!Enter

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

viEnterEscEscEsc:qa!Enter