Перейти до змісту

Текстовий редактор VI

У цьому розділі ви дізнаєтеся, як працювати з редактором Visual.


Цілі: у цьому розділі майбутні адміністратори Linux дізнаються, як:

✔ Використовувати основні команди редактора VI;
✔ Змінювати текст за допомогою редактора VI.

🏁 команди користувача, linux

Знання: ⭐
Складність: ⭐ ⭐

Час читання: 20 хвилин


Visual (VI) є дуже популярним текстовим редактором у Linux, незважаючи на його обмежену ергономіку. Це справді редактор, який повністю працює в текстовому режимі: кожна дія виконується за допомогою клавіші на клавіатурі або спеціальних команд.

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

Його функції:

  • Вставляти, видаляти, змінювати текст;
  • Копіювати слова, рядки або блоки тексту;
  • Пошук і заміна символів.

Команда vi

Команда vi відкриває текстовий редактор VI.

vi [-c command] [file]

Приклад:

vi /home/rockstar/file
Опція Опис
-c command Виконує VI, вказавши команду на початку

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

Якщо файл не існує, VI відкриває порожній файл і на екрані відображається порожня сторінка. Коли файл буде збережено, він отримає ім’я, указане в команді.

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

Редактор vim використовує інтерфейс і функції VI з багатьма вдосконаленнями.

vim [-c command] [file]

Серед вдосконалень користувач має підсвічування синтаксису, що дуже корисно для редагування сценаріїв оболонки або файлів конфігурації.

Під час сеансу VI використовує буферний файл, у якому записує всі зміни, зроблені користувачем.

Примітка

Поки користувач не зберіг свою роботу, вихідний файл не змінюється.

Під час запуску VI знаходиться в режимі команд.

Порада

Рядок тексту завершується натисканням ENTER але якщо екран недостатньо широкий, VI робить автоматичні розриви рядків, конфігурація wrap за замовчуванням. Ці розриви рядків можуть бути небажаними, це конфігурація nowrap.

Щоб вийти з VI, у режимі команд натисніть : і введіть:

  • q для виходу без збереження (quit);
  • w, щоб зберегти вашу роботу (записати);
  • wq (write quit) або x (eXit), щоб зберегти та вийти.

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

Щоб примусово вийти без підтвердження, ви повинні додати ! до попередніх команд.

Увага

Немає періодичного резервного копіювання, тому не забувайте регулярно зберігати свою роботу.

Режим роботи

У VI є 3 режими роботи:

  • Режим команд;
  • Режим вставки;
  • Режим ex.

Філософія VI полягає в тому, щоб чергувати режим команд і режим вставлення.

Третій режим, ex, — це командний режим нижнього колонтитула зі старого текстового редактора.

Командний режим

Це стандартний режим під час запуску VI. Щоб отримати доступ до нього з будь-якого іншого режиму, просто натисніть клавішу ESC.

У цей час усі введення з клавіатури сприймаються як команди та виконуються відповідні дії. По суті, це команди для редагування тексту (копіювати, вставити, скасувати, ...).

Команди не відображаються на екрані.

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

Це режим зміни тексту. Щоб отримати доступ до нього з командного режиму, вам потрібно натиснути спеціальні клавіші, які виконуватимуть дію на додаток до зміни режиму.

Текст вводиться не безпосередньо у файл, а в буферну зону пам’яті. Зміни діють лише після збереження файлу.

Режим Ex

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

Команда перевіряється натисканням клавіші ENTER.

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

У режимі команд існує кілька способів переміщення курсору.

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

VI залишається в режимі команд після переміщення курсору.

Курсор розміщується під потрібним символом.

Символи

  • Перемістити один або n символів ліворуч:

, n, h або nh

  • Перемістити один або n символ праворуч:

, n, l або nl

  • Перемістити один або n символів угору:

, n, k або nk

  • Перемістити один або n символів вниз:

, n, j або nj

  • Перейти до кінця рядка:

$ або END

  • Перейти на початок рядка:

0 або POS1

Від першої літери слова

Слова складаються з букв або цифр. Розділові знаки й апостроф розділяють слова.

Якщо курсор знаходиться в середині слова, w переходить до наступного слова, b переходить до початку слова.

Якщо рядок закінчено, VI автоматично переходить до наступного рядка.

  • Перемістити одне або n слів праворуч:

w або nw

  • Перемістити одне або n слів ліворуч:

b або nb

З будь-якого місця у рядку

  • Перейти до останнього рядка тексту:

G

  • Перейти до рядка n:

nG

  • Перейти до першого рядка екрана:

H

  • Перейти до середньої лінії екрана:

M

  • Перехід до останнього рядка екрана:

L

Вставка тексту

У режимі команд є кілька способів вставити текст.

VI перемикається в режим вставки після введення одного з цих ключів.

Важливо

VI переходить у режим вставки. Тож вам доведеться натиснути ESC клавіша для повернення в командний режим.

По відношенню до символа

  • Вставити текст перед символом:

i (insert)

  • Вставити текст після символу:

a (append)

По відношенню до рядка

  • Вставити текст на початку рядка:

I

  • Вставити текст в кінці рядка:

A

По відношенню до тексту

  • Вставити текст перед рядком:

O

  • Вставити текст після рядка:

o

Символи, слова та рядки

VI дозволяє редагувати текст, керуючи:

  • символами,
  • словами,
  • рядками.

У кожному випадку можливо:

  • видалити,
  • перемістити,
  • скопіювати,
  • вирізати,
  • вставити.

Ці операції виконуються в командному режимі.

Символи

  • Видалити один або n символів:

x or nx

  • Замінити символ іншим:

rcharacter

  • Замінити кілька символів іншими:

RсимволиESC

Важливо

R команда перемикається в режим replace, який є різновидом режиму insert.

Слова

  • Видалити (вирізати) одне або n слів:

dw чи ndw

  • Скопіювати одне або n слів:

yw або nyw

  • Вставити слово один або n раз після курсору:

p або np

  • Вставити слово один або n раз перед курсором:

P або nP

  • Замінити одне слово:

cwwordESC

Порада

Необхідно встановити курсор під першим символом слова, яке потрібно вирізати (або скопіювати), інакше VI виріже (або скопіює) лише частину слова між курсором і кінцем. Видалити слово – це вирізати його. Якщо його не вставити згодом, буфер спорожняється, а слово видаляється.

Рядки

  • Видалити (вирізати) один або n рядків:

dd або ndd

  • Скопіювати один або n рядків:

yy або nyy

  • Вставити те, що було скопійовано чи видалено один раз або n разів після поточного рядка:

p або np

  • Вставити те, що було скопійовано чи видалено один раз або n разів перед поточним рядком:

P або nP

  • Видалити (вирізати) від початку рядка до курсору:

d0

  • Видалити (вирізати) від курсору до кінця рядка:

d$

  • Копіювати від початку рядка до курсору:

y0

  • Скопіювати від курсора до кінця рядка:

y$

  • Видалити (вирізати) текст із поточного рядка:

dL або dG

  • Скопіювати текст з поточного рядка:

yL або yG

Скасувати дію

  • Скасувати останню дію:

u

  • Скасувати дії в поточному рядку:

U

Скасувати скасування

  • Скасувати скасування

Ctrl+r

Команди EX

Режим Ex дозволяє вам діяти з файлом (збереження, макет, параметри, ...). Він також знаходиться в режимі Ex, де вводяться команди пошуку та заміни. Команди відображаються внизу сторінки, їх потрібно перевірити за допомогою клавіші ENTER.

Щоб перейти до режиму Ex, з режиму команд введіть :.

Номери рядків файлів

  • Показати/сховати нумерацію:

:set nu або довший :set number

:set nonu або довший :set nonnumber

Пошук рядка

  • Пошук рядка за допомогою курсору:

/string

  • Пошук рядка перед курсором:

?string

  • Знайти наступний відповідний рядок:

n

  • Знайти попередній відповідний рядок:

N

Для полегшення пошуку в VI є символи підстановки.

  • [] : шукає діапазон символів або один символ, можливі значення якого вказані.

Приклад:

/[Ww]ord : шукає word або Word

/[1-9]word : шукає 1word, 2wordxслово, де x – число

  • ^ : пошук рядків, які починаються з символів.

Приклад:

/^Word

  • $ : пошук рядків, які закінчуються символами.

Приклад:

/Word$

  • . : пошук будь-якого окремого символу, крім символів нового рядка.

Приклад:

/W.rd : пошук Word, Ward

  • * : кількість збігів попереднього символу, 0 разів або будь-яка кількість разів.

Приклад:

/W*d

Примітка. Якщо ви хочете ігнорувати регістр (тимчасово) під час зіставлення рядків, введіть :set ic.

Замінити рядок

Від 1-го до останнього рядка тексту замінити шуканий рядок на вказаний рядок:

:1,$ s/search/replace

Примітка. Ви також можете використовувати :0,$s/search/replace, щоб указати, починаючи з абсолютного початку файлу.

Від рядка n до рядка m замінити шуканий рядок на вказаний рядок:

:n,m s/search/replace

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

:n,m s/search/replace/g

Переглянути весь файл, щоб замінити шуканий рядок вказаним рядком:

:% s/search/replace

Видалити вказаний рядок

  • Видалити порожній рядок

:g/^$/d

  • Видалити рядки з номерами рядків від n до m

:n,md

  • Видалити рядок, на якому знаходиться рядок

:g/string/d

  • Видалити рядок, який не містить рядка

:g!/string/d

  • Видалити всі рядки, які починаються з #

:g/^#/d

g тут означає глобальний.

Файлові операції

  • Зберегти файл:

:w

  • Зберегти під іншою назвою:

:w file

  • Зберегти з рядка n до рядка m в іншому файлі:

:n,m w file

  • Перезавантажити останній запис файлу:

e!

  • Вставити вміст іншого файлу після курсору:

:r file

  • Вийти з редагування файлу без збереження:

:q

  • Вийти з редагування файлу, який було змінено під час сеансу, але не збережено:

:q!

  • Вийти з файлу та зберегти:

:wq або :x

Інші функції

Можна виконати VI, вказавши параметри, які потрібно завантажити для сеансу. Для цього необхідно використати параметр -c:

vi -c "set nu" /home/rockstar/file

Також можна ввести команди Ex у файл під назвою .exrc, розміщений у каталозі входу користувача. Під час кожного запуску VI або VIM команди зчитуються та застосовуються.

Команда vimtutor

Існує підручник для вивчення VI. Він доступний за допомогою команди vimtutor.

vimtutor