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

46

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

Letseatlunch
источник

Ответы:

72

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

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

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

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

  • :q - выйти, если не было внесено никаких изменений
  • :q! - выйти и уничтожить любые сделанные изменения
  • :wq - записать изменения (сохранить) и выйти
  • :x- похоже :wq, только записать файл, если были внесены изменения, затем выйти
jondavidjohn
источник
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 : это гарантирует, что вы находитесь в «командном» режиме. Который вы хотите для ввода команд, как те, которые необходимы для выхода.

belacqua
источник
4

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

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

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

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

ændrük
источник
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
источник
@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
Zoltan
источник