Vi имеет два режима: режим вставки и режим команд. Редактор начинает работать в командном режиме, когда происходит перемещение курсора и удаление и копирование текста. Режим вставки начинается после ввода команд вставки и изменения. [ESC] возвращает редактор в режим команд (где вы можете выйти из редактора, например, напечатав :q! ). Большинство команд выполняется как только вы их напечатаете, кроме команд с двоеточием, которые выполняются, когда вы нажмете клавишу Enter.
|
:x
|
Выход с сохранением изменений |
:q
|
Выход, если не было изменений |
ZZ
|
Выход с сохранением изменений, если они были |
:q!
|
Выход с игнорирование изменений |
i
|
Вставка перед курсором |
I
|
Вставка перед текущей строкой |
a
|
Добавление после курсора |
A
|
Добавление после текущей строки |
o
|
Открытие новой строки после текущей строк |
O
|
Открытие новой строки перед текущей строкой |
r
|
Замена одного символа |
R
|
Замена нескольких символов |
h
|
Перемещение влево |
j
|
Перемещение вправо |
k
|
Перемещение вверх |
l
|
Перемещение вниз |
w
|
Перемещение к следующему слову |
W
|
Перемещение к следующему пробелу - ограничителю слова |
b
|
Перемещение к началу слова |
B
|
Перемещение к начальному пробелу - ограничителю слова |
e
|
Перемещение к концу слова |
E
|
Перемещение к конечному пробелу - ограничителю слова |
(
|
Перемещение на предложение назад |
)
|
Перемещение на предложение вперед |
{
|
Перемещение на параграф назад |
}
|
Перемещение на параграф вперед |
0
|
Перемещение На начало строки |
$
|
Перемещение на конец строки |
1G
|
Перемещение на первую строку файла |
G
|
Перемещение на последнюю строку файла |
nG
|
Перемещение на n -ю строку файла
|
:n
|
Перемещение на n -ю строку файла
|
fc
|
Перемещение впреред на c
|
Fc
|
Перемещение назад на c
|
H
|
Перемещение в начало экрана |
M
|
Перемещение в конец экрана |
L
|
Перемещение to botton of screen |
%
|
Перемещение to associated ( ), { }, [ ] |
Почти все команды удаления выполняются печатаньем d , а затем - команды перемещения. Например, dw удаляет слово. Несколько других команд удаления:
|
x
|
Удаление символа справа от курсора |
X
|
Удаление символа слева от курсора |
D
|
Удаление текста до конца строки |
dd
|
Удаление текущей строки |
:d
|
Удаление текущей строки |
Как и команды удаления, большинство команд буферизации выполняются печатаньем y , а затем - команды перемещения. Например, y$ сохраняет в буфере текст до конца строки. Две другие команды сохранения в буфере:
|
yy
|
Сохраняет в буфере текущую строку |
:y
|
Сохраняет в буфере текущую строку |
Команды изменения являются командами удаления, которые переводят редактор в режим вставки. Они выполняются печатаньем c , а затем - команды перемещения. Например, cw
изменяет слово. Несколько других команд изменения:
|
C
|
Изменение до конца строки |
cc
|
Изменение всей строки |
p
|
Вставка после позиции или после строки |
P
|
Вставка перед позицией или перед строкой |
Перед любой командой удаления, изменения, сохранения в буфере или вставки из буфера могут быть созданы именованные буферы. Общий префикс имеет форму "c , где c - любой символ нижнего регистра. Например, "adw удаляет слово в буфер a . Его можно впоследствие вернуть в текс соответствующей командой "ap .
|
На любую строку в файле могут быть установлены именованные маркеры. Именем маркера может быть любой символ нижнего регистра. Markers may also be used as limits for ranges. |
mc
|
Установка для строки маркер c .
|
`c
|
Переход на начало строки с маркером c .
|
'c
|
Переход на первый непробельный символ строки с маркером c .
|
/строка
|
Поиск вперед строки строка
|
?строка
|
Поиск вперед строки строка
|
n
|
Поиск следующего вхождения строки строка
|
N
|
Поиск предыдущего вхождения строки строка
|
Функуии поиска и замены выполняются командой :s . Она обычно комбинируется с областью действия или с комендой :g (см.ниже).
|
:s/шаблон/строка/флаги
|
Замена шаблон на строка в соответствии с флаги .
|
g
|
Флаг - замена всех вхождений шаблона. |
c
|
Флаг - подтверждение замен. |
&
|
Повторение последней команды :s .
|
. (точка)
|
Один любой символ, кроме символа конца строки. |
*
|
Ноль или более любых символов. |
[...]
|
Один любой символ, определенный в наборе. |
[^...]
|
Один любой символ, не определенный в наборе. |
^
|
Начало строки. |
$
|
Конец строки. |
\<
|
Начало слова. |
\>
|
Конец слова. |
\(...\)
|
Группировка - обычно используется для группирования условий. |
\n
|
Содержимок n -й группировки.
|
[A-Z]
|
От заглавной буквы A до заглавной буквы Z .
|
[a-z]
|
От строчной буквы a до строчной буквы z .
|
[0-9]
|
От 0 до 9 (все цифры)
|
[./=+]
|
Набор, содержащий . (точка), / (слеш), = , и + .
|
[-A-F]
|
Набор от заглавной буквы A до заглавной буквы F и тире (тире д.б. указано первым).
|
[0-9 A-Z]
|
Набор, содержащий все заглавные буквы и цифры и пробел |
[A-Z][a-zA-Z]
|
Первая позиция содержит заглавную букву от A до Z .Вторая позиция содержит любую букву. |
/Hello/ |
Соответствует строке, содержащей значение Hello .
|
/^TEST$/ |
Соответствует строке, содержащей только текст TEST .
|
/^[a-zA-Z]/ | Соответствует строке, начинающейся с любой буквы. |
/^[a-z].*/ |
Соответствует строке, в которой первый символ - из набора a-z , а за ним следует еще, как минимум, один символ.
|
/2134$/ |
Соответствует строке, заканчивающейся 2134 .
|
/\(21|35\)/ |
Соответствует строке, содержащей 21 или 35 .Обратите внимание на использование ( ) с вертикальной чертой, задающей условие "или".
|
/[0-9]*/ | Соответствует строке, содержащей ноль или более цифр. |
/^[^#]/ |
Соответствует строке, в которой первый символ - не # .
|
Примечания: 1. Регулярные выражения чувствительны к решистру. 2. Регулярные выражения используются, когда задается pattern .
|
Каждой командое может быть предшествовать число, которое задает, сколько раз она должна быть выполнена. Например, 5dw удалит 5 слов, а 3fe переместит курсор вперед на 3-е вхождение буквы e . даже вставка может повторяться в соответствии с этим методом, например, вставить одну и ту же строку 100 раз.
|
Области действия могут предшествовать большинству команд с двоеточием и приводят к тому, что команда будет выполняться для строки или строк. Например, :3,7d удалит строки 3-7. Области действия обычно комбинируются с командой :s
для выполнения замены на нескольких строках и с :.,$s/шаблон/строка/g
для выполнения замены от текцщей строки до конца файла.
|
:n,m
|
Область действия - Строки n -m
|
:.
|
Область действия - Текущая строка. |
:$
|
Область действия - Последняя строка. |
:'c
|
Область действия - Маркер c
|
:%
|
Область действия - Все строки файла. |
:g/шаблон/
|
Область действия - Все строки, содержащие шаблон .
|
:w файл
|
Запись в файл .
|
:r файл
|
Чтение из файл .
|
:n
|
Переход к следующему файлу. |
:p
|
Переход к предыдущему файлу. |
:e файл
|
Редактирование файла файл |
!!программа
|
Замена строки выводом программы программа .
|
~ | Переключение регистра. |
J | Соединение строк. |
. | Повторение последней команды изменения текста. |
u | Отмена последнего изменения. |
U | Отмена всех изменений в строке. |