Як вийти з редактора Vi або Vim

Редактор vi може спантеличити тих, хто з ним мало знайомий. Щоб уникнути несподіваних ситуацій з цією програмою, необхідно знати кілька основних прийомів. У цій статті ми розглянемо, як вийти з vi або vim у системах Linux, macOS та інших UNIX-подібних операційних системах.

Швидкий спосіб виходу

Якщо ви опинилися в vi або vim і хочете вийти, незалежно від того, чи потрібно зберегти зміни, ось інструкція:

Спочатку кілька разів натисніть клавішу Esc. Це гарантує, що ви вийдете з режиму вставки та перейдете в режим команд. Далі введіть :q! і натисніть Enter. Це команда, яка дозволяє вийти з vi без збереження змін. Якщо ж ви хочете зберегти внесені зміни, замість :q! введіть :wq.

Освоєння командного рядка Linux вимагає знання набагато більшого, ніж просто вихід з текстового редактора. Розглянемо детальніше, як працює vi та чому інструкції для виходу з нього можуть здатися незвичними. Насправді, vi є важливим та потужним інструментом, і час, витрачений на його вивчення, вартий того.

vi – всюдисущий редактор

Оскільки vi є практично скрізь, цілком ймовірно, що ви з ним зіткнетесь. Іноді ви можете потрапити до нього випадково. Наприклад, коли ви допомагаєте другу з налаштуванням комп’ютера з Linux і вводите команду crontab -e, може відкритися vi. Це означає, що хтось встановив vi як редактор за замовчуванням для crontab.

Або, якщо ви є системним адміністратором, vi може бути єдиним редактором, доступним через віддалений SSH-сеанс. У такому випадку вам доведеться редагувати файли користувача, наприклад, .bashrc, саме за допомогою vi.

Команда для запуску vi і відкриття файлу виглядає дуже просто. Введіть vi, пробіл, а потім назву потрібного файлу. Натисніть Enter. Запущена програма може бути як власне vi, так і vim – “покращений vi”. Це залежить від дистрибутива Linux. Наприклад, Ubuntu використовує vim. Усі наведені в цій статті інструкції підходять і для vim.

vi .bashrc

Одна з основних відмінностей між vi та іншими редакторами полягає в тому, що після запуску vi ви не можете відразу почати вводити текст. Це пов’язано з тим, що vi є модальним редактором. Редагування здійснюється в режимі вставки, а виконання команд – в режимі команд. Після запуску vi за замовчуванням перебуває в командному режимі.

Концепція режиму вставки та режиму команд може бути незрозумілою для тих, хто не знайомий з vi. Багато команд, які виконуються в командному режимі, впливають на файл, який ви редагуєте. Якщо ви знаходитесь в командному режимі і помилково намагаєтесь ввести текст, результат може бути непередбачуваним. Деякі натискання клавіш можуть бути інтерпретовані як команди, які видаляють або розбивають рядки, переміщують курсор або видаляють текст.

Незалежно від того, що ви вводите, ви можете не знайти способу вийти з редактора. Тим часом ваш файл може бути зіпсований, а незрозумілі звукові сигнали можуть вас дратувати.

Режим команд та режим вставки

Для успішної роботи з vi потрібно перемикати його у відповідний режим залежно від того, що ви намагаєтесь зробити.

Режим команд є режимом за замовчуванням під час запуску vi. Якщо ви не знаєте, що робити, ви можете почати друкувати. Якщо випадково натиснути клавішу “i” або будь-яку з інших 10 клавіш, що перемикають в режим вставки (a, A, c, C, I, o, O, R, s і S), то ви раптом зможете набирати текст. Тепер ви перебуваєте в режимі вставки.

Може здатися, що це прогрес, але якщо ви натиснете будь-яку зі стрілок, літери A, B, C або D з’являться як окремі символи у новому порожньому рядку на початку файлу.

Не хвилюйтеся, ми допоможемо вам. Це на диво просто, якщо знати, як це робити. Запам’ятайте ці два натискання клавіш: Esc переведе вас у режим команди, а “i” переведе вас у режим вставки.

Для того, щоб вийти з редактора, потрібно перебувати в командному режимі та ввести відповідну команду.

Повернення в командний режим

Щоб перейти в командний режим, натисніть клавішу Esc. Зовні нічого не зміниться. Натисніть її ще кілька разів. Якщо під час натискання клавіші Esc ви почуєте звуковий сигнал, це означає, що ви вже в режимі команди. Цей сигнал повідомляє: “Припиніть натискати Esc, ви вже в командному режимі”. Якщо ви чуєте сигнал при натисканні Esc, все добре.

Введіть двокрапку, літеру “q” і знак оклику без пробілів. Ці три символи повинні з’явитися в лівому нижньому куті екрана термінала. Якщо цього не сталося, натискайте Esc, доки не почуєте сигнал, і повторіть спробу. Коли побачите ці символи, натисніть Enter:

:q!

У цій команді q є скороченням від quit (вийти). Знак оклику додає виразності, ніби ви кричите “Вийти!” на vi. Це може вас трохи підбадьорити.

Знак оклику також наказує vi не зберігати будь-які зміни, які ви внесли у файл. Якщо ви випадково наробили помилок в vi, ви, напевно, не захочете зберігати хаос, який ви створили.

Повернувшись до командного рядка, ви можете перевірити, чи файл не зазнав змін. Це можна зробити за допомогою такої команди:

cat .bashrc | less

Якщо при виході з vi ви бачите повідомлення “не записано з моменту останньої зміни”, це означає, що ви пропустили знак оклику в команді. Щоб запобігти виходу та втраті змін, які ви хотіли б зберегти, vi дає вам можливість зберегти їх. Просто перенаберіть команду :q! зі знаком оклику, щоб вийти з vi, відмовившись від будь-яких змін.

Збереження змін

Якщо ви задоволені змінами, які ви внесли до файлу, ви можете вийти та зберегти їх за допомогою команди :wq (записати та вийти). Перш ніж продовжити, переконайтеся, що ви дійсно хочете, щоб внесені зміни були записані у файл.

Введіть двокрапку, літеру “w” (записати) і літеру “q” (вийти). Коли ви побачите їх в нижньому лівому куті термінала, натисніть клавішу Enter:

:wq

Навчання – варте зусиль

Використання vi схоже на гру на фортепіано. Ви не можете просто сісти і відразу його освоїти. Вам потрібно попрактикуватися. Не намагайтеся вчитися на льоту, коли на вас тисне необхідність швидко щось відредагувати. Це все одно, що вперше сісти за фортепіано перед вашим дебютним концертом.

Потужність vi полягає у великій кількості комбінацій клавіш, кожна з яких виконує певну функцію редагування. Це чудово, але ви не зможете скористатися їхніми перевагами, доки не запам’ятаєте їх, не потренуєтеся і не доведете їх до автоматизму.

А поки що, якщо ви опинитеся в vi і переглядаєте важливий файл, просто введіть :q! та вийдіть. Ваш файл буде вам вдячний.