Это комбинация двух непересекающихся возможностей: ex - строчный редактор (расширение базового редактора ed); vi - экранный редактор (может выполнять также все команды редак- тора ex).
$ vi myfile(одно или несколько имен файлов через пробелы для последовательного вызова их на редактирование).
$ vi + myfileНа экране - конец файла; курсор - в начале последней строки.
$ vi +10 myfileНа экране - часть файла и строка 10 - в центре экрана; курсор - в начале этой строки.
Esc : w q ! Enter(нажать на клавишу Esc, ввести двоеточие - оно появится в нижней части экрана, ввести символы w, q и восклицательный знак, нажать на клавишу Enter).
Esc : q ! Enter
Подвести курсор к нужной позиции и нажать одну из ниже указанных клавиш.
Уничтожение
| x | - уничтожить текущую букву (где курсор), текст сдвигается на ее место. |
Изменение (замена):
| r | - замена текущей буквы; rv - замена на v. |
| s | - замена одной или нескольких букв текстом; например, |
| 3stest | - замена трех букв строкой 'test'. |
Добавление:
| i | - вставить произвольный текст перед курсором. Конец ввода текста - клавиша Esc; |
| a | - добавить произвольный текст после курсора. Конец ввода текста - клавиша Esc. |
Уничтожение слова (слов):
подвести курсор к началу слова и нажать:
| dw | (delete word); |
| 2dw | - 2 слова; |
| ndw | - n слов (n - число). |
Изменение слова:
подвести курсор к началу слова и печатать:
| cw < слово > Esc |
| 2cw <два слова> Esc |
и т.д.
Уничтожение части строки
| d$ | - от текущего символа до конца строки (текущий символ исчезает - то же делает D); |
| d^ | - от начала строки до текущего символа (текущий символ остается). |
Замена части строки (аналогична)
| c$ (или C) <текст замены (может быть из нескольких строк)> Esc | - замена конца строки (от курсора); |
| c^ <текст замены> Esc | - замена начала строки (до курсора, не включая его). ; |
Уничтожение целой строки
| dd | - уничтожение одной строки; |
| 10dd | - уничтожение 10 строк. |
Замена целой строки
| cc < текст > Esc | - замена одной строки; |
| 5cc < текст > Esc | - замена пяти строк. |
Создание новой строки
| о | - пустая строка после текущей строки; |
| O | - пустая строка перед текущей строкой. |
Ввод до и после текущей строки:
| ^i (или I) | - до; |
| $a (или A) | - после. |
Часть текста сохраняется в буфере редактора, затем вставляется в другое место или в несколько мест (если вставка повторяется). Буфера могут быть именованными и один - анонимный. При выполнении команд ndd (где n - число) удаляемые n строк попадают на некоторое время в неименованный буфер.
Содержание буфера можно вставить:
| p (put) | после текущей строчки командой; |
| P (Put) | перед текущей строчкой командой. |
Следует помнить, что в анонимном буфере хранится последний уничтоженный текст, предыдущие - безвозвратно теряются! (команды с (change) - тоже уничтожают буфер).
| yw | - сохранить слово (курсор - в начале слова); |
| yy (или Y) | - сохранить одну строку ; |
| 5yy (или 5Y) | - сохранить 5 строк; |
| и т.п. (в анонимном буфере). |
Именованные буфера имеют имена из одной буквы от a до z;
доступ к буферу - по имени имеет вид "x, где x - имя буфера.
| a | - Запись в буфер |
| "a3yy | - сохранить 3 строки в буфере a (с начала буфера). |
Вставка текста из анонимного буфера (как обычно):
| p | - после текущей строки; |
| P | - перед ней. |
Вставка текста из именованного буфера:
| "ap | - после текущей строки из буфера a; |
| "aP | - перед ней из буфера a. |
Добавление в буфер:
| "aAdd | - добавить к a уничтоженную по dd текущую строку. |