Как закрыть vim из командной строки?


46

Я знаю, что это больше общий вопрос о Linux, но ж / д. Поэтому, когда я вхожу в командную строку, такую ​​как vim, она отображает весь текст в файле, я могу редактировать его и т. Д. Но я не могу понять, как закрыть или сохранить файл и вернуться в командную строку, не убивая процесс. Любая помощь приветствуется.




Ответы:


72

В vim есть 3 разных режима:

  • Вставить - позволяет печатать и редактировать как обычно
  • Визуальный - используется для выбора копирования / вставки и т. Д.
  • Обычный - используется для команд

Чтобы вернуться в обычный режим, вы всегда можете нажать esc.

Когда вы находитесь в обычном режиме Нажмите, :чтобы начать команду (вы увидите, что она появляется в левом нижнем углу). Следующие команды связаны с выходом из vim:

  • :q - выйти, если не было внесено никаких изменений
  • :q! - выйти и уничтожить любые сделанные изменения
  • :wq - записать изменения (сохранить) и выйти
  • :x- похоже :wq, только записать файл, если были внесены изменения, затем выйти

4
и :xярлык для:wq
— Уорд Мюйлаерт

2
Вы просто забыли «нормальный» режим. Ух ты. На самом деле mode()функция в vim может возвращать 18 различных значений.
— Бенуа

Как намекает Бенуа, в этом ответе запутанно используется термин «командный режим» для обозначения того, что в документации vim называется «нормальный режим». Vim docs считает командный режим тем, что вы вводите, нажимая :в обычном режиме. Если вы нажмете esc, вы вернетесь в нормальный режим. -1 за то, что он вводит в заблуждение людей, пытающихся выучить стандартную терминологию (и, следовательно, уметь понимать систему помощи).
— интуитивно

6
@intuited Любой может предложить изменения, которые, вероятно, будут более полезными в долгосрочной перспективе, чем отрицательное голосование и хороший совет, который скрывается в комментариях.
— Майкл Мартин-Смукер

Спасибо за информацию, она также должна быть показана где-то в VIM, чтобы можно было знать ... ее нелепо искать в интернете.
— Шридутт Котари

14

Сначала нажмите escapeклавишу. 1

Затем просто введите ZZ(это два заглавных Z подряд).
Или введите :x. Либо сохранит любые правки и уйдет.
Вы также можете использовать:wq

Кроме того, вы можете набрать :q (иначе, « выйти, пожалуйста »). Это будет выход, только если вы не внесли изменения.

Если вы внесли изменения, и вы хотите отменить их и уйти, введите :q!(aka " выйти, черт побери !")

1 : это гарантирует, что вы находитесь в «командном» режиме. Который вы хотите для ввода команд, как те, которые необходимы для выхода.


4

К нашему большому неудобству, нет общего способа выхода из программ командной строки, как есть кнопка «X» для графических программ.

Многие программы командной строки следуют теме использования Q(например, manи top) или Ctrl+ C(например, pingи watch) для выхода, но это значительно различается, особенно среди текстовых редакторов:

  • Вью , в частности , использует неясные комбинации , :q!то Enter, как правило , предшествует несколько прессов Escдля хорошей меры.
  • Emacs , другой драгоценный камень, предпочитает Ctrl+, Xа затем Ctrl+ C.

Подобные редакторы - ловушки для неопытных. Мои личные предпочтения и рекомендации заключаются в том, чтобы при необходимости редактировать текст в командной строке использовать вместо этого более понятный собственный редактор Джо (JOE) .


4
Я бы на самом деле утверждал, что nanoэто гораздо более универсальный текстовый редактор, не требующий пояснений.
— jondavidjohn

@jondavidjohn Ваше утверждение является спорным. Я согласен с тем, что nano, несомненно, более универсален, и я не утверждаю, что он менее понятен, чем JOE. Я предпочитаю JOE из-за его расширенного набора функций , и моя рекомендация для неопытных пользователей зависит от тонкостей, таких как использование термина Save вместо архаичного WriteOut .
— Ондрюк

Обычно вы можете использовать ^ Z, чтобы приостановить процесс. Затем вы можете убить его, проигнорировать, поставить на задний план или вернуть. (убить% 1 или убить% x, bg, fg). В любом случае, существует некоторое единство контроля работы.
— belacqua

3

Наряду с ответом Джондавиджона, здесь есть две ссылки, которые имеют необходимую информацию об использовании vim.

  1. Это изображение клавиатуры, которое показывает вам, что делает каждая клавиша в зависимости от того, находитесь ли вы в режиме редактирования, командном или визуальном режимах:

    http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

  2. Это лучший урок Vim, который я когда-либо работал. Он понятен и понятен, что связано с форматом IRC / мгновенных сообщений.

    http://www.vi-improved.org/tutorial.php

Наконец, есть такие как aendruk, которые просто не хотят использовать расширенные текстовые редакторы командной строки. В частности, у Vim крутая кривая обучения, и он действительно требует определенных усилий, чтобы привыкнуть. Но это очень быстро и очень мощно. Если у вас есть интерес к linux помимо базового использования рабочего стола, стоит потратить время на изучение достойного текстового редактора командной строки, такого как Vim или Emacs. Если вам просто нужно отредактировать какой-то текст, и вам все равно, попробуйте набрать текст gedit filename.txt. Он запустит знакомую графическую программу, очень похожую на Блокнот из Windows.


@djeikyb: Я ценю, что вы делаете различие между базовым использованием рабочего стола и расширенным редактированием текста в командной строке. Сила Ubuntu по сравнению с другими дистрибутивами Linux заключается в том, что он делает рабочий стол Linux доступным для обычных пользователей компьютеров, которым, к его чести, теперь все больше и больше доверяют уникальная роскошь - никогда не знать, что такое редакторы, такие как Vim.
— Ондрюк

... Именно с учетом этой особой свободы я принимаю решение работать так же высоко, как традиционные методы командной строки Linux, на которые у меня хватит терпения при повседневном использовании компьютера. Я прилагаю усилия, чтобы использовать только простые и доступные инструменты, потому что я могу себе это позволить . Было бы неправильно сказать, что я просто не люблю текстовые редакторы командной строки. Наоборот, мне нравится Vim с его плагином VimOutliner, и я обязан ему за его влияние на проект Vimperator / Pentadactyl.
— Ондрюк

... Тем не менее, я вижу свое личное использование этих инструментов как отклонение от типичного использования компьютера. Я придерживаюсь мнения, что для сообщества Ubuntu было бы неплохо менее охотно предлагать новичкам, что случайное использование современных инструментов с крутыми кривыми обучения является нормой для обычных пользователей.
— Ондрюк

@Letseatlunch, если ваша цель - стать опытным в Vim, то я во что бы то ни стало призываю вас продолжать заниматься этим. Я только хочу сообщить, что, хотя, что важно, Ubuntu предлагает множество таких продвинутых инструментов, которых не хватает другим операционным системам, их использование никогда не должно быть обязательным требованием для использования Ubuntu.
— Ондрюк

Отличное уточнение! Я отредактирую свой ответ, чтобы лучше отразить это. Кроме того, я специально порекомендовал gedit поверх nano, потому что gedit - более высокий уровень со знакомым графическим интерфейсом, и потому что nano сначала смешно вводил меня в заблуждение (что означает символ каретки? Как мне выйти? Как мне сохранить ??) , Что забавно, учитывая, что Vim - мой любимый редактор.
— djeikyb

2

если Esc :q!не работает,

попробуйте сначала Ctrl+ q(чтобы разблокировать экран, заблокированный Ctrl+ s)

затем повторите попытку Esc :q!(чтобы выйти без сохранения) или Esc :wq(чтобы сохранить и выйти)


0

Хочу выйти без сохранения:

  1. Ударил ESC
  2. Ударил ZQ

Выход с сохранением:

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