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

Текстовий редактор 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 або N H

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

++стрілка вправо++, N ++стрілка вправо++, L або N L

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

++стрілка вверх++, N ++стрілка вверх++, K або N K

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

++стрілка вниз++, N ++стрілка вниз++, J або N J

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

$ або End

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

0 або POS1

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

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

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

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

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

W або N W

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

B або N B

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

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

G

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

N G

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

H

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

M

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

L

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

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

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

Примітка

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

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

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

i (insert)

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

a (append)

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

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

I

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

A

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

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

O

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

o

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

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

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

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

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

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

Символи

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

x або n x

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

r+символ

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

R+символи+Esc

Примітка

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

Слова

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

d+w або n+d+w

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

y+w або n+y+w

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

P або n+p

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

P або n+P

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

C+W+слово+Esc

Порада

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

Рядки

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

d+d або n+d+d

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

y+y або n+y+y

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

p or n+p

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

P або n+P

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

d+0

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

d+$

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

y+0

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

y+$

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

d+L або d+G

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

y+L або y+G

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

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

U

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

++U

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

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

Ctrl+R

Команди EX

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

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

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

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

:set nu або :set number

:set nonu або :set nonumber

Пошук рядка

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

/string

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

?string

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

n

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

N

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

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

Приклад:

/[Ww]ord : шукає слово або Слово

/[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