Довідка по редактору 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