Як закрити vim з командного рядка?


46

Я знаю, що це скоріше загальне питання щодо Linux, але ж / е. Отже, коли я ввожу таку програму, як vim, у командному рядку вона відображає весь текст у файлі, і я можу його редагувати і т. Д. Але я не можу зрозуміти, як закрити або зберегти файл і повернутися до командного рядка без вбивства процес. Будь-яка допомога вдячна.




Відповіді:


72

У vim існує 3 різних режими:

  • Вставка - дозволяє вводити та редагувати як звичайне
  • Візуально - використовується для вибору копії / вставки тощо.
  • Звичайний - використовується для команд

Щоб повернутися до звичайного режиму, завжди можна натиснути esc.

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

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

4
і :xє ярликом для:wq
Ward Muylaert

2
Ви просто забули "нормальний" режим. Ого. Насправді mode()функція vim може повертати 18 різних значень.
Бенуа

Як нагадав Бенуа, ця відповідь заплутано використовує термін "командний режим" для позначення того, що документація vim називає "звичайний режим". Документи vim вважають командний режим таким, яким ви вводите, натискаючи :в звичайному режимі. Якщо ви потрапили esc, ви повернетесь у звичайний режим. -1 за те, що вводить в оману людей, які намагаються вивчити стандартну термінологію (і, отже, мати можливість осмислити систему допомоги).
інтуїтоване

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

Дякую за інформацію, її також слід показати десь у VIM, щоб можна було знати ... її так смішно шукати в Інтернеті.
shridutt kothari

14

Спочатку натисніть на escapeключ. 1

Потім просто введіть ZZ(це два великі Z підряд).
Або введіть :x. Або збережете будь-які зміни та залиште.
Ви також можете використовувати:wq

Крім того, ви можете ввести :q (він же " вийти, будь ласка "). Це буде закрито, лише якщо ви не внесли зміни.

Якщо ви внесли зміни, і ви хочете їх відмовитись та залишити, введіть :q!(він же " кинь, чорт забирай !")

1 : Це гарантує, що ви перебуваєте в режимі "командування". Які ви хочете вводити команди, як і ті, які потрібні для виходу.


4

До нашого незручності, немає загального методу виходу з програм командного рядка, як є кнопка "X" для графічних програм.

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

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

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


4
Я б фактично заперечував, що nanoце набагато універсальніший редактор тексту консолі, що пояснює себе.
jondavidjohn

@jondavidjohn Ваша суперечка суперечка. Я погоджуюсь, що нано, безперечно, універсальніший, і я не стверджую, що він є менш зрозумілим, ніж JOE. Мої переваги до JOE обумовлені розширеним набором функцій , і на мою рекомендацію недосвідченим користувачам впливають тонкощі, такі як використання терміна « Зберегти замість архаїчного WriteOut» .
ændrük

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

3

Поряд з відповіддю jondavidjohn, є два посилання, які містять неодмінну інформацію про використання 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.
ændrük

... Маючи на увазі цю особливу свободу, я приймаю рішення працювати над рівнем традиційних методів командного рядка Linux, наскільки я маю терпіння під час щоденного використання комп'ютера. Я докладаю зусиль, щоб використовувати лише прості та доступні інструменти багато в чому тому, що я можу собі дозволити . Було б неточно сказати, що мені просто не подобаються редактори тексту командного рядка. Навпаки, мені здається, що Vim захоплюється плагіном VimOutliner, і я вдячний за його вплив на проект Vimperator / Pentadactyl.
ændrük

... Однак я бачу моє особисте використання цих інструментів як відхилення від типового використання комп'ютера. Я вважаю, що здоровим розвитком спільноти Ubuntu було б менш легко пропонувати новачкам, що випадкове використання передових інструментів із крутими кривими навчання є нормою серед повсякденних користувачів.
ændrük

@Letseatlunch, якщо ваша мета - бути досвідченим у Vim, то я, безумовно, закликаю вас продовжувати займатися цим. Я маю на увазі лише повідомити, що, хоча, що важливо, Ubuntu пропонує безліч таких передових інструментів, яких інших операційних систем взагалі бракує, навчання їх використання ніколи не повинно бути вимогою для використання Ubuntu.
ændrük

Велике уточнення! Я відредагую свою відповідь, щоб краще відобразити це. Крім того, я спеціально рекомендував gedit over nano, тому що gedit вищого рівня зі знайомим gui, а тому, що спочатку нано смішно бентежило мене (що означає символ каретки ?? як я кину ?? ?? як я врятую ??) . Що зараз смішно, вважаючи, що 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.