Головна » Як користуватись радактором Vim

Як користуватись радактором Vim

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

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

У цій статті ми розглянемо, як користуватися Vim, розглянемо основи роботи з цим редактором, а також його основні команди.


Зміст

Редагування файлу у Vim

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

vim /path/to/the/file

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

Щоб перейти в режим вставки (редагування), натисніть i. Тут ви можете редагувати файл так само, як і в nano. Після завершення натисніть Esc, щоб перейти в командний режим, введіть :wq і натисніть Enter. Записати та вийти. Все, готово.

Якщо ви хочете вийти без збереження змін, використовуйте :q! замість :wq.

Версії редактора

Наразі існує три версії редактора — vi, vim та neovim. Vim розшифровується як Vi Improved, тобто покращений vi. Це нова версія, яка принесла дуже багато покращень. У більшості сучасних дистрибутивів використовується саме вона. Тому, якщо я буду писати vi, це означатиме, що я маю на увазі vim.

Крім того, існує NeoVim, який є покращеною версією Vim з підтримкою асинхронності, більшої кількості можливостей та плагінів. Але я поки що не перейшов на цю нову версію, тому мало що можу про неї сказати.

Режими роботи Vim

Текстовий редактор Vim може працювати в кількох режимах. Це і є його головна особливість. Перший режим, який використовується за замовчуванням при відкритті редактора, — це командний. У цьому режимі ви можете використовувати літерні клавіші для керування редактором, пошуку, а також командний рядок. Все це потрібно робити лише в англійській розкладці. Принаймні за замовчуванням.

Другий режим — режим вставки. Це звичайне редагування тексту, він працює так само, як і редагування тексту в nano. Для перемикання в режим вставки використовується клавіша i. Для перемикання назад у командний режим — клавіша Esc.

Є ще візуальний режим, у якому виконується виділення тексту, режим заміни, який активується, коли ви використовуєте команди заміни символів, а також режим командного рядка, де можна вводити різні команди vi, який активується введенням двокрапки ":" у командному режимі.

Як використовувати редактор Vim

Почнемо ми, як зазвичай, із запуску програми, а також опцій, які можна їй передати. Синтаксис Vim дуже простий:

$ vim опції імʼя_файлу

Або:

$ vi опції ім'я_файлу

Якщо у вашій системі встановлено пакет vim, то команда vi буде посилатися на виконуваний файл vim. У такому випадку між цими командами немає різниці. Простий запуск vim без вказування імені файлу призведе до відкриття порожнього вікна редагування нового файлу. А тепер давайте розглянемо основні опції команди:

  • +номер - перемістити курсор до вказаного рядка після запуску.
  • +/шаблон - виконати пошук за шаблоном і перемістити курсор до першого входження.
  • "+команда" - виконати команду після запуску програми.
  • -b - двійковий режим, для редагування виконуваних файлів.
  • -d - режим пошуку відмінностей у файлах, потрібно вказати кілька файлів для відкриття.
  • -g - графічний режим.
  • -n - не використовувати автозбереження для відновлення файлу при збої.
  • -R - режим лише для читання.
  • -w - зберегти всі дії у файл.
  • -x - шифрувати файл при записі.
  • -C - режим сумісності з Vi.

1. Переміщення курсору

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

Для переміщення курсора використовуються такі команди:

  • h - на один символ вліво;
  • l - на один символ вправо;
  • j - на один рядок вниз;
  • k - на один рядок вгору;
  • w - на слово вправо;
  • b - на слово вліво;
  • H - перейти вниз екрану;
  • G - перейти в кінець файлу;
  • gg - перейти на початок файлу;
  • <номер>G - перейти до конкретного рядка;
  • . - перейти до останнього редагування.

Ви можете запустити редактор і поекспериментувати, щоб було легше зрозуміти, як це працює. Почніть з h, l, j, k — багато користувачів використовують їх для переміщення по тексту не лише у Vim, оскільки це дозволяє не відривати руки від клавіатури. Якщо перед тим, як натиснути кнопку літери, натиснути цифру, то ця команда буде повторена кілька разів. Наприклад, 3j перемістить курсор на три рядки вниз.

Дуже часто виникає необхідність перейти на початок рядка або в його кінець. Команди Vim можуть у цьому допомогти. Використовуйте команду ^ для того, щоб перейти на початок рядка, або команду $ для переходу в кінець рядка. Зверніть увагу, що для того, щоб набрати ці команди, потрібно затиснути Shift і натиснути 4 або 6.

2. Режим вставки

Для переключення в режим вставки використовуються такі команди:

  • i - вставити текст з позиції курсора, символ під курсором буде замінено;
  • I - вставити текст на початок рядка;
  • a - додати текст, починаючи з позиції курсора;
  • o - вставити новий рядок після поточного та розпочати редагування;
  • O - вставити новий рядок перед поточним та розпочати редагування;

До цих команд також можна застосовувати символи повторення. Поекспериментуйте, можна отримати цікавий і не зовсім очікуваний результат. Коли закінчите редагування, ви можете переключитися назад у командний режим, натиснувши клавішу Esc.

3. Командний рядок Vim

Командний рядок Vim запускається в командному режимі натисканням двокрапки - ":". Тут доступні команди для збереження змін, налаштування інтерфейсу, виходу з редактора та взаємодії з зовнішньою оболонкою. Ось найчастіше використовувані команди редактора Vim:

  • :w - зберегти файл;
  • :q - закрити редактор;
  • :q! - закрити редактор без збереження;
  • :e файл - прочитати вміст файлу в позицію курсора;
  • :r файл - вставити вміст файлу в наступний рядок;
  • :r! - виконати команду оболонки та вставити відповідь у редактор;
  • :set змінна=значення - встановити значення змінної, наприклад, set tabstop=4, за допомогою цієї команди можна керувати багатьма аспектами роботи Vim.
  • :buffers - переглянути відкриті файли;
  • :reg - переглянути вміст буферів обміну.

4. Вихід з Vim

Таким чином, для того щоб вийти з Vim, потрібно перейти в командний режим, натиснувши Esc, активувати командний рядок за допомогою двокрапки та виконати команду q:

А для того щоб вийти без збереження змін, наберіть :q! і натисніть Enter. З основами розібралися, і сподіваюся, тепер використання Vim не здаватиметься вам таким складним. Але це ще далеко не все — цей потужний редактор може ще дуже багато чого. Далі ми розглянемо кілька більш складних прикладів використання Vim.

5. Видалення символів і рядків

Ви можете редагувати текст не лише у звичайному режимі, а й у командному за допомогою команд. Іноді це навіть зручніше, ніж у режимі редагування. Наприклад, ви можете видаляти символи. Для цього застосовуються такі команди:

  • d - видалити символ;
  • dd - видалити весь рядок;
  • D - видалити символи, починаючи від курсора і до кінця рядка.

Ці команди редактора Vim працюють трохи інакше. Після натискання однієї з них нічого не станеться. Ми звісно можемо вказати, скільки разів потрібно повторити команду як раніше, але також потрібно вказати кількість символів, до яких вона буде застосована, і напрямок за допомогою кнопок переміщення курсора. Це робиться після натискання команди. Наприклад, щоб видалити один символ праворуч, введіть dl. Щоб видалити два символи праворуч від курсора, натисніть d3l, а щоб видалити три рядки вниз - d3j.

6. Заміна символів

У командному режимі ви можете не лише видаляти символи, а й замінювати їх на інші. Для цього існують дві команди:

  • r - замінити поточний символ;
  • R - замінити кілька символів.

Перша команда дозволяє замінити один символ і повернутися в командний режим. Друга команда буде замінювати всі символи, доки ви не повернетеся в командний режим натисканням клавіші Esc:

7. Скасування та повторення змін

У звичайних текстових редакторах ви можете використовувати Ctrl+Z для скасування попередніх змін. У редакторі Vim є власна історія змін. Вона доступна в командному режимі. Якщо ви хочете скасувати останню зміну, просто натисніть u. Зверніть увагу, що кожне наступне натискання цієї кнопки скасовуватиме попередню зміну, зроблену в командному режимі. Наприклад, якщо ви видалили один символ командою d, то він буде відновлений.

Однак, якщо ви перейдете в режим вставки і зробите там багато змін, а потім повернетеся в командний режим, то всі ці зміни будуть розглядатися як одне ціле. Якщо ви випадково скасували щось важливе, то можете повторити дію, натиснувши Ctrl+r:

Ось деякі команди для скасування та повторення дію:

  • u - скасувати останню дію;
  • U - скасувати останню дію в поточному рядку;
  • . - повторити останню дію;
  • Ctrl+r - скасувати скасування останньої дії.

8. Змінні у Vim

Хочу більш детально зупинитися на змінних. Як було сказано раніше, у Vim можна встановлювати значення змінних за допомогою команди set , і це впливатиме на функціонування редактора. Змінні можуть містити стічку або булеве значення. Зі стрічками все просто, з булевими значеннями складніше. Наприклад, за допомогою наступної команди можна увімкнути відображення номера рядка:

:set number

Команда встановлює значення змінної number в true. Щоб вимкнути відображення номерів рядків, потрібно встановити його в false. Для цього можна інвертувати булеве значення:

:set number!

Крім того, ви можете скинути значення змінної до заводських налаштувань за допомогою &:

set number&

9. Виділення та буфер обміну

Текстовий редактор Vim підтримує виділення тексту без використання мишки. Тому ви можете копіювати та вставляти текст навіть у TTY середовищах, без графічного інтерфейсу. Натисніть v коли ви знаходитесь у командному режимі для переходу в режим виділення. Потім ви можете використовувати кнопки переміщення курсору h, j, k, l для виділення потрібних символів або рядків.

Тепер ви можете виконувати будь-які дії з виділеним текстом. Наприклад, можна його видалити, натиснувши кнопку d. Щоб скинути виділення, натисніть кнопку Esc. Це ще не все. У Vim є свій буфер обміну, який можна використовувати для копіювання та вставки тексту. Цей буфер обміну складається з кількох регістрів. Якщо не вказано інше, то всі команди працюють з буфером обміну за замовчуванням. Ось основні команди для копіювання та вставки тексту:

  • y - скопіювати в буфер обміну;
  • yy або Y - скопіювати рядок в буфер обміну;
  • x - вирізати в буфер обміну;
  • p - вставити з буферу обміну.

Команди для копіювання та вирізання працюють аналогічно командам для видалення тексту. Ви можете вказати кількість символів та напрямок або просто виділити текст. Зверніть увагу, що кожен запущений екземпляр Vim має свій окремий регістр буферу обміну, і він не пов'язаний із системним буфером обміну. Тому ви не зможете скопіювати текст з однієї програми в іншу без додаткових дій або налаштувань.

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

vim --version | grep clip

Якщо ця можливість підтримується, ви побачите +clipboard або +xterm_clipboard Давайте повернемося до регістрів. У Vim є кілька регістрів буфера обміну, і один із них пов'язаний із системним буфером обміну. Це регістр "+. Ви можете вивести всі регістри та їхній вміст за допомогою команди:

:reg

Регістр з ім'ям "" — це той самий буфер обміну, який використовується за замовчуванням. Якщо ви хочете скопіювати текст у системний регістр, необхідно вказати ім'я регістру перед командою копіювання. Наприклад, натисніть "+ а потім y. Зверніть увагу, що потрібно використовувати клавішу Shift для отримання потрібного символу. Треба натиснути Shift+' і Shift+=.

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

:let @+=@"

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

10. Пошук та заміна у Vim

Досить часто нам потрібно знайти певну послідовність у тексті. Текстовий редактор Vim вміє це робити. По-перше, якщо потрібно знайти символ у рядку, натисніть f і введіть потрібний символ, курсор буде переміщено до його позиції.

Для пошуку по всьому файлу використовуйте команду /. Після неї потрібно ввести слово, яке потрібно знайти. Для пошуку наступного входження використовуйте n, для попереднього - N.

Ось основні команди для пошуку:

  • f - знайти один символ;
  • / - шукати кілька символів;
  • n - знайти наступне входження;
  • N - знайти попереднє входження.

Для заміни буде використовуватися трохи інша команда:

:%s/string_to_search/string_to_paste/g

Наприклад, давайте замінимо всі входження слова Alice на Robert

:%s/Alice/Robert/g

Двокрапка запускає командну оболонку з командою s для заміни. Символ % означає, що обробляти потрібно весь файл, а g означає, що потрібно обробити всі знайдені рядки, а не лише перший. Щоб програма запитувала перед кожною заміною, можна додати в кінець рядка опцію c.

11. Редагування кількох файлів

Щоб відкрити кілька файлів, просто передайте їх у параметри запуску програми:

vim /etc/default/grub /etc/default/cron

Редактор Vim Linux відкриє перший файл. Для переключення на другий використовуйте команду :n, щоб повернутися назад :N. За допомогою команди :buffers ви можете переглянути всі відкриті файли, а командою :buffer 1 переключитися на перший файл.

Вбудование навчання

Також я порадив би вам пройти курс навчання, вбудований у редакторі. Виконання всіх навчальних завдань займе 25-30 хвилин. Це допоможе вам закріпити всі знання, отримані з цієї статті, на практиці. Справа в тому, що команд і комбінацій клавіш у Vim дуже багато, і запам'ятати їх усі без практики неможливо. Для запуску навчання виконайте наступну команду:

vimtutor

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

Висновки

У цій статті ми розглянули, як користуватися текстовими редактором Vim. Це ще далеко не всі його можливості, але тепер ви можете впевнено працювати з цим редактором і забути про Nano. Як ви можете бачити, редактор містить дуже багато функцій, і запам'ятати їх відразу всі може бути важко. Але розібравшись з цим раз, ви згодом захочете увімкнути підтримку комбінацій клавіш Vim і в інших програмах, тому що це зручно.

Creative Commons License
Стаття поширюється під ліцензією Creative Commons ShareAlike 4.0 при використанні матеріалу посилання на джерело обовязкове .

Залишити коментар