Каждый, кто впервые сталкивается с операционными системами семейства Unix — знакомятся с ним 🙂 Загадочным редактором, в котором невозможно ничего написать, изменить, не работают стрелки и т.д. Да, это Vi редактор, который начал свой путь в далеком 1976 году и до сегодня является одним из самых популярных среди системных администраторов (Сейчас на меня набросятся сторонники Emacs, поскольку спор между сторонниками vi и emacs является классическим примером «религиозных войн»). Собственно я больше люблю его более современный клон Vim.
Редактор VI имеет три режима:
1. Командный — в этом режиме можно перемещаться по файлу и выполнять редактирующие команды над текстом. Команды вызываются ОБЫЧНЫМИ ЛАТИНСКИМИ БУКВАМИ.
2. Ввода текста — в этом режиме обычные латинские буквы будут вставляться в текст.
3. Режим строчного редактора ED используется для управления файлами (сохранить файл, зачитать файл и т.д.)
Для того, что бы что-то написать, вам нужно: перейти в режим ввода (нажатием латинской i ), написать текст, выйти из режима ввода (клавиша Esc), перейти в командный режим (клавиша :) и ввести команду (сохранить и выйти, будет так: :wq). Страшно? Тогда Вам дальше не стоит этого читать! Лучше пользуйтесь текстовый редактор ee (Easy Editor).
Вы все таки решились?! 🙂
РЕЖИМЫ: Ввода == ESC ====> Командный == :Q ==> Редактора ed
^ | ^ |
+----aAiIcCrRs <---+ +----- vi -------+
{стрелки},hjkl
^U/^D табуляция вверх/вниз
^F/^B страницу вниз/вверх
^E/^Y подвинуться на строку вниз/вверх
w/b/e вперед/назад на слово/в конец слова
W/B/E вперед/назад на слово/в конец опробеленного слова
(/) назад/вперед на предложение
{/} назад/вперед на абзац
[[/]] назад/вперед на функцию или секцию
% найти парную скобку ( или {
{n}G на строку {n}
{n}| в колонку {n}
H/M/L в начало/середину/конец экрана
z/z./z- текущую строку в начало/середину/конец экрана
^/$/0 начало/конец строки
x уничтожить символ
X забой
J склеить строки
a/i / A/I вставка за/перед _ / концом/началом строки
R режим замены
r буква на букву
s буква на буквы
o/O вставить строку под/над _
C$ Заменить конец строки
^G о текущем файле и строке
u откатка (одна)
^L/^R перерисовать
ESC вернуться в командный режим
Забой Забой
^W/^U Убрать слово/Убрать строку
^V Вставить CRTL-символ[ы]
p/P вспомнить фрагмент за/перед _
{n} ["буква_буфер] "команда" {m}"команда позиционирования"
весь фрагмент запоминается! или повтор команды для строки
d уничтожать фрагмент
y запоминать фраг
c заменить фрагмент (==> в режим ввода )
</> сдвинуть влево/вправо
! команда пропустить фрагмент через фильтр
7yy запомнить 7 строк в неименованном буфере
"aAd{ добавить к буф a с удалением от _ до начала абзаца
!G sort отсортировать строки от курсора и до конца
:map клавиша_имя_макро тело_макрокоманды {CR}
:map! клавиша_имя_макро тело_макрокоманды {CR} - в режиме ввода
:ab сокращение сокращаемый_текст {CR} - в режиме ввода
?строка искать вверх
/строка искать вниз
n повторить поиск
N вернуться на последнюю найденную строку
:s/рег_выраж/замена/gc - глобальный с подтверждением
:Q/vi вход / выход в режим ed
:g/строка - поставить визуальный фильтр
:+5 движение по файлу
^^ Перейти в альтернативное окно
:[1,$] w [>>] [file] записать в file [от 1 до $ строки]
:q[!] закончить сеанс [форсированно]
:[15]r [file] или [!komanda] вставить после [15] стр
:e редактировать новый файл
:n редактировать следующий файл
:sh выйти в Shell
:! команда запустить на выполнение Shelloм
:set nu / nonu нумеровать/ненумеровать строки
:set smd{CR} показывать текущий режим
EXINIT="конфигурационные команды" - переменная окружения
.exrc - файл с командами конфигурации
^ | ^ |
+----aAiIcCrRs <---+ +----- vi -------+
{стрелки},hjkl
^U/^D табуляция вверх/вниз
^F/^B страницу вниз/вверх
^E/^Y подвинуться на строку вниз/вверх
w/b/e вперед/назад на слово/в конец слова
W/B/E вперед/назад на слово/в конец опробеленного слова
(/) назад/вперед на предложение
{/} назад/вперед на абзац
[[/]] назад/вперед на функцию или секцию
% найти парную скобку ( или {
{n}G на строку {n}
{n}| в колонку {n}
H/M/L в начало/середину/конец экрана
z/z./z- текущую строку в начало/середину/конец экрана
^/$/0 начало/конец строки
x уничтожить символ
X забой
J склеить строки
a/i / A/I вставка за/перед _ / концом/началом строки
R режим замены
r буква на букву
s буква на буквы
o/O вставить строку под/над _
C$ Заменить конец строки
^G о текущем файле и строке
u откатка (одна)
^L/^R перерисовать
ESC вернуться в командный режим
Забой Забой
^W/^U Убрать слово/Убрать строку
^V Вставить CRTL-символ[ы]
p/P вспомнить фрагмент за/перед _
{n} ["буква_буфер] "команда" {m}"команда позиционирования"
весь фрагмент запоминается! или повтор команды для строки
d уничтожать фрагмент
y запоминать фраг
c заменить фрагмент (==> в режим ввода )
</> сдвинуть влево/вправо
! команда пропустить фрагмент через фильтр
7yy запомнить 7 строк в неименованном буфере
"aAd{ добавить к буф a с удалением от _ до начала абзаца
!G sort отсортировать строки от курсора и до конца
:map клавиша_имя_макро тело_макрокоманды {CR}
:map! клавиша_имя_макро тело_макрокоманды {CR} - в режиме ввода
:ab сокращение сокращаемый_текст {CR} - в режиме ввода
?строка искать вверх
/строка искать вниз
n повторить поиск
N вернуться на последнюю найденную строку
:s/рег_выраж/замена/gc - глобальный с подтверждением
:Q/vi вход / выход в режим ed
:g/строка - поставить визуальный фильтр
:+5 движение по файлу
^^ Перейти в альтернативное окно
:[1,$] w [>>] [file] записать в file [от 1 до $ строки]
:q[!] закончить сеанс [форсированно]
:[15]r [file] или [!komanda] вставить после [15] стр
:e редактировать новый файл
:n редактировать следующий файл
:sh выйти в Shell
:! команда запустить на выполнение Shelloм
:set nu / nonu нумеровать/ненумеровать строки
:set smd{CR} показывать текущий режим
EXINIT="конфигурационные команды" - переменная окружения
.exrc - файл с командами конфигурации