Довідка по редактору vi
Зміст
Порада: Перед будь-якими діями з документом введіть наступну команду:
Запуск та завершення VI
| vi filename | Відкрити файл filename для редагування |
| vi -r filename | Відкрити останню збережену версію filename після аварійного виходу |
| vi filename file2 . | Відкрити filename, потім file2. Перехід до наступного файлу - :n |
| ZZ або :wq або :x | Зберегти зміни та завершити VI |
| :w | Зберегти зміни у поточному файлі |
| :w! | Безперечно зберегти поточний файл |
| :w file | Зберегти поточний файл під назвою file |
| :q! | Завершити VI без збереження |
Вставка тексту
| i | Вставка перед курсором |
| I | Вставка перед рядком |
| a | Додавання за курсором |
| A | Додавання після рядка |
| :r file | Вставити вміст файлу після поточного рядка |
| У режимі введення: | |
| CTRL-i або TAB | Вставити зміщення праворуч на shift width |
| CTRL-d | Зменшити зсув праворуч на shift width |
| CTRL-h або Backspace | Видалити попередній символ |
| CTRL-w | Видалити попереднє слово |
| CTRL-u | Видалити попередній рядок |
Переміщення текстом
| h | Ліворуч |
| j | вниз |
| k | Вгору |
| l | Праворуч |
| "стрілки" | Переміщення текстом (у великих файлах працює повільно, в деяких конфігураціях може працювати некоректно). |
| w | До наступного слова |
| b | На початок слова |
| ^ | До першого непробільного символу рядка |
| + або | До першого символу наступного рядка |
| - | До першого непробільного символу попереднього рядка |
| e | До кінця слова |
| ( | На початок пропозиції |
| ) | До кінця речення |
| На початок абзацу | |
| > | До кінця абзацу |
| Примітка: абзаци поділяються порожнім рядком. | |
| 0 або | На початок рядка |
| $ | У кінець рядка |
| 1G | До першого рядка файлу |
| G | До останнього рядка файлу |
| H | До верхнього рядка екрану |
| L | До нижнього рядка екрану |
| CTRL-d | Прокручування вниз на пів-екрана |
| CTRL-f | Прокручування вниз на екран |
| CTRL-u | Прокручування вгору на пів-екрана |
| CTRL-b | Прокручування вгору на екран |
| % | До парної дужки: ( ), < >, [ ] |
Видалення тексту
Більшість команд видалення утворюються із символу d та команди переміщення. Наприклад, dw видаляє слово. Інші команди видалення:
| x | Видалити поточний символ |
| nx | Видалити n символів праворуч, починаючи з поточного |
| X | Видалити символ ліворуч від курсору |
| nX | Видалити n символів ліворуч від курсору |
| dd або :d | Видалити поточний рядок |
| "(a-z)dd | Вирізати поточний рядок у іменований буфер (від a до z) |
Копіювання в буфер
Подібно до команд видалення,більшість команд копіювання в буфер складаються із символу y та команди переміщення. Наприклад, y$ поміщає у буфер кінець рядка.
| yy або :y | Копіювати поточний рядок |
| "(a-z)yy | Копіювати поточний рядок у іменований буфер (від a до z) |
Зміна тексту
Команди зміни діють як команди видалення з наступним переведенням у режим введення. Більшість із них складається із символу c та команди переміщення. Наприклад, cw замінює слово.
Вставка із буфера
| p | Помістити текст із буфера після курсору |
| P | Помістити текст із буфера перед курсором |
| "(a-z)p або "(a-z)P | Помістити текст із буфера (від a до z) після/перед поточним рядком |
Ім'я буфера може бути вказано перед будь-якою командою видалення, зміни, копіювання або вставки. Префікс має вигляд “c, де c – будь-який символ нижнього регістру. Наприклад, “adw видаляє слово та поміщає його у буфер a. Потім його можна буде помістити в текст за командою ap.
Пошук/заміна підрядків
| /str | Пошук str вперед від курсору |
| ? str | Пошук str назад від курсору |
| n | Повторити пошук у тому самому напрямку |
| :n,ms/str1/str2/opt | Шукати рядок str1 з рядка n до m (n та m можуть бути опущені); замінити str1 на str2; із опціями opt. Можливі опції: g – глобальний, c – підтверджувати заміни (y – замінити, – не замінювати), p – друкувати змінені рядки |
| & | Повторити останню команду :s |
| :g/ str1 /s/ str2 / str3 / | Знайти рядок, що містить str1 замінити str2 на str3 |
| ; | Повторити пошук |
| , | Повторитипошук у зворотному напрямку |
Регулярні вирази
| . (крапка) | Будь-який символ, крім «нового рядка» |
| * | 0 або більше будь-яких символів будь-якого символу |
| [. ] | Будь-який із зазначених символів |
| [^. ] | Будь-який із символів, крім зазначених |
| \ | Строго наприкінці слова |
| ^ | На початку рядка |
| $ | Наприкінці рядка |
| \(. \) | Група умов |
| \n | Значення n-ої групи |
| \ | Скасування значення спецсимволу (наприклад, \$ дозволяє шукати символ $) |
| \\ | Скасування особливої дії символу \ |
Фактично перед будь-якою командою можна вказати кількість її повторень. Наприклад, 5dw призведе до видалення 5 слів, а 3fe - до переміщення курсору вперед на 3-тє входження символу «e». Подібним чином можна діяти з командами вставки, наприклад, вставити 100 однакових рядків.
Зауважте: вводиться :set option для включення режиму та :set no option для вимкнення. Щоб встановити налаштування для кожного запуску VI, у домашньому каталозі створюється файл .exrc, що містить дані команди без двокрапки перед ними.
| :set ai | Автоматичний відступ (за попереднім рядком) |
| :set all | Вивести на екран усі режими |
| :set eb | Звуковий сигнал при помилках |
| :set ic | Ігнорувати регістр під час пошуку |
| :set list | Показувати символи табуляції (^l) та кінця рядка ($) |
| :set nu :set number | Показувати номери рядків |
| :set showmode | Показувати поточний режим у нижній частині екрану |
| :set showmatch | Підсвічувати парну дужку, що відкриває при введенні закриває |
| :set wa | Виключити нормальну перевірку перед записом |
| :set wm=n | Встановити розмір правого поля автоперенесення. Для відключення автоперенесення n=0 |
- Файл ".exrc" у домашньому каталозі може містити набір макросів, що використовується при кожному запуску VI (записуються аналогічно до команд визначення макросів, але без двокрапки).
- Щоб включити в макрос керуючий символ, наприклад ESC, слід попередньо натиснути CTRL-v.
- Щоб включити в макрос лапки ("), перед ними набирається backslash.
- Кнопки, що не використовуються у vi: K V Z g q v * = [ ] @ # і функціональні.
Приклад (виділено команди VI, які будуть включені в макрос):
:map v/ I CTRL-vESC dwi You CTRL-vESC ESC
Дія макросу: При натисканні v знайти "I" (/I ESC), видалити слово (dw) та вставити "You" (iYou ESC). CTRL-v потрібно для вставки коду ESC