Основные команды vi

Команды Выполняемые функции
TERM=terminal_name
export TERM
Установка конфигурации терминала
tput init Инициализировать терминал как terminal_name
vi filename Вызов редактора vi для редактирования файла filename
a Добавить текст после курсора
h Перемещает курсор на один символ влево
j Перемещает курсор вниз на одну строку
k Перемещает курсор вверх на одну строку
l Перемещает курсор на один символ вправо
x Удалить символ
<CR> Возврат каретки
<ESC> Перейти из режима ввода в командный режим
:w Записать в файл
:q Завершить работу с редактором
:wq Записать буфер в файл и завершить работу с редактором vi
ZZ Записать изменения в файл и завершить работу с vi



Команды позиционирования курсора

Команда Действие команды
Позиционирование на символ
h Перемещает курсор на один символ влево
l Перемещает курсор на один символ вправо
BACKSPACE Перемещает курсор на один символ влево
SPACEBAR Перемещает курсор на один символ вправо
fx Осуществляет поиск указанного символа x справа от текущей позиции курсора
Fx Осуществляет поиск указанного символа x слева от текущей позиции курсора
tx Осуществляет перемещение курсора вправо на символ до указанного символа x
Tx Осуществляет перемещение курсора влево на символ до указанного символа x
; Повторяет предыдущий поиск символа. Команда ; запоминает символ и ищет следующее появление символа в текущей строке
, Повторяет предыдущий поиск символа, но в обратном направлении
j Перемещает курсор вниз на одну строку
k Перемещает курсор вверх на одну строку
- Перемещает курсор на одну строку вверх, позиционируя его на первом ненулевом символе
+ Перемещает курсор вниз на одну строку и позиционирует на первый непустой символ
<CR> Перемещает курсор вниз на одну строку и позиционирует на первый непустой символ
Позиционирование на строку
$ Переместить курсор на последний символ в строке
0(ноль) Переместить курсор на первый символ в строке
^ Переместить курсор на первый ненулевой символ в строке
Позиционирование на слово
w Перемещает курсор к началу следующего слова
W Игнорирует все знаки пунктуации и перемещает курсор на следующее после пробела слово
e Перемещает курсор на последний символ в следующем слове
E Перемещает курсор на последний символ в слове. Игнорирует все символы пунктуации за исключением пробела
b Перемещает курсор к первому символу предыдущего слова
B Используется подобно команде b, за исключением того, что слова разделяются только символами пробел и новая строка
Позиционирование на предложение
( Перемещает курсор в начало текущего предложения
) Перемещает курсор в начало следующего предложения
Позиционирование на параграф
{ Переместить курсор в начало текущего параграфа, который ограничивается пустой строкой
} Переместить курсор в начало следующего параграфа
Позиционирование в окне
H Переместить курсор к первой строке экрана
M Переместить курсор к средней строке экрана
L Переместить курсор к последней строке экрана



Дополнительные команды перемещения курсора в редакторе vi

Команда Действие
Прокрутка
^f Прокрутка экрана вперед на полное окно. Откры- вается новое окно с текстом, расположенным ниже текущего окна
^d Прокрутка текста вниз на пол-окна. Открываются строки, расположенные ниже текущего окна
^b Прокрутка экрана назад на полное окно. Откры- вается новое окно с текстом, расположенным выше текущего окна
^d Прокрутка текста вверх на пол-окна. Открываются строки, расположенные выше текущего окна
Позиционирование с помощью номера строки
1G Перейти к первой строке в файле
G Перейти к последней строке в файле
^g Выдать номер строки и состояние файла
Поиск по шаблону
/pattern Поиск вперед в буфере до первого появления шаблона. Курсор помещается на первом символе шаблона
?pattern Поиск назад в буфере до первого появления шаблона. Курсор помещается на первом символе шаблона
n Повторить последнюю команду поиска
N Повторить последнюю команду поиска в обратном направлении

Команды создания текста

Команда Функция
a Создать текст после курсора
A Создать текст в конце текущей строки
i Создать текст перед курсором
I Создать текст перед первым ненулевым символом в текущей строке
o Создать текст с начала новой строки, расположенной под текущей строкой
O Создать текст с начала новой строки, расположенной над текущей строкой
<ESC> Возвратить vi в командный режим из режима ввода текста


Команды удаления текста

Команда Функция
Режим ввода
BACKSPACE Удалить текущий символ
1w Удалить текущее слово
@ Удалить текущую строку нового текста или удалить весь новый текст в текущей строке Командный режим
u Отменить последнюю команду
U Восстановить текущую строку в прежнем состоянии
x Удалить текущий символ
ndx Удалить n-ый объект текста x
dw Удалить слово над курсором и следующий за ним пробел, или знак пунктуации
dW Удалить слово и пунктуацию над курсором с последующим за ним пробелом
dd Удалить текущую строку
D Удалить часть строки справа от курсора
d) Удалить текущее предложение от текущей позиции курсора до конца
d} Удалить текущий параграф от текущей позиции до конца


Команды изменения текста

Команда Функция
r Заменить текущий символ
R Заменить те символы, которые введены в режиме ESCAPE
s Удалить символ, под которым расположен курсор и добавить текст. Для окончания режима ввода нажмите клавишу ESCAPE
S Заменить все символы в строке
cc Заменить все символы в строке
ncx Заменить n объектов текста типа x (предложение, параграф)
cw Заменить слово или оставшиеся символы в слове на новый текст
C Заменить оставшиеся символы в строке от курсора до конца строки

Команда y

Команда Функция
nyx Копирование n-го объекта текста типа x (предложение или параграф)
yw Создание копии слова
yy Создание копии текущей строки
nyy Копирование n строк
y) Создание копии всего текста до конца предложения
y} Создание копии всего текста до конца параграфа

Команды извлечения и присоединения текста

Команда Функция
p Помещает содержимое временного буфера, полученное с помощью команды y и команд удаления, в текст после курсора
yy Создает копию строки текста и помещает во временный буфер
nyx Создает копию n-го объекта текста типа x и помещает ее во временный буфер
"xyn Помещает копию объекта текста типа n в в регистр с именем x
"xp Помещает содержимое регистра x после курсора

Специальные команды

Команда Функция
. Повторить последнюю команду
j Соединить текущую строку со строкой, расположенной ниже
^l Очистить и восстановить текущее окно
~ Заменить нижний регистр на верхний

Команды построчного редактора

Команда Функция
: Обозначает, что следующая за ней команда является командой построчного редактора
:sh<CR> Временный возврат к shell для выполнения команд shell
^d Возврат из временного shell в текущее окно vi для продолжения редактирования
:n<CR> Переход к n-ой строке буфера
:x,yw data<CR> Записать строки от номера x до номера y в новый файл data
:$<CR> Переход к последней строке буфера
:.,$d<CR> Удалить все строки в буфере, начиная с текущей и до послед- ней строки
:r shell.file<CR> Вставить содержимое shell.file после текущей строки в буфере
:s/text/new_words/<CR> Заменить первое появление символов text в текущей строке на new_words
:s/text/new_words/g<CR> Заменить каждое появление символов text в текущей строке на new_words
:g/text/s//new_words/g<CR> Заменить каждое появление символов text в файле на new_words

Команды завершения

Команда Функция
ZZ Записать буфер в файл, если после последней записи в буфере были сделаны изменения, и завершить работу с vi
:wq<CR> Записать буфер в файл и завершить работу с vi
:w filename<CR> Записать буфер в новый файл filename
:q<CR> и завершить работу с vi
:w! filename<CR> Перезаписать содержимое буфера в уже
:q<CR> существующий файл filename и завершить работу с vi
:q!<CR> Завершить работу с vi без записи буфера в файл, даже если содержимое буфера изменялось
:q<CR> Завершить работу с vi без записи буфера в файл, если буфер не изменялся

Специальные опции vi

Опция Функция
vi file1 file2 file3<CR> Ввести три файла (file1 file2 и file3) в буфер vi для редактирования
:w<CR> Записать текущий файл и начать
:n<CR> редактирование следующего файла
vi -r file1<CR> Восстановить изменения, сделанные в файле file1
view file<CR> Осуществить просмотр файла с помощью опции "только чтение" чтобы предотвратить случайные изменения в файле file