5.4 Полноэкранный редактор vi

Режимы работы редактора
Ввод текста
Команды
Перемещение курсора
Редактирование
Командная строка
Блоки, буферы, окна редактирования. Повторители
Открыть/создать файл
Дополнительные опции

Редактор vi — универсальный полноэкранный текстовый редактор в среде UNIX. Универсальность означает, что, во-первых, этот редактор есть во всех UNIX-подобных ОС и, во-вторых, этот редактор работает с практически любым видом терминала (ANSI, VT100, VT220, VT320, DEC, и т. д.). Эта универсальность выражается непривычным (для пользователей DOS) пользовательским интерфейсом: для управления редактором используются лишь «обычные» кнопки клавиатуры (алфавитно-цифровые символы и знаки препинания).
Имеющиеся на многих типах терминалов функциональные клавиши практически не используются. Если клавиатура терминала имеет стрелочные клавиши, то они используются, но в ограниченном контексте.

Режимы работы редактора

Ввод текста

В этом режиме все, что набирается на клавиатуре, отображается на экране терминала и запоминается в буфере редактора.

В данном режиме нет возможности осуществлять операции редактирования текста, за исключением стирания последнего набранного символа (с помощью комбинации клавиш  «Ctrl+H»).

Командный режим

В этом режиме символы клавиатуры выполняют специальные функции (перемещение курсора, стирание частей текста, и т. д.), то есть функции редактирования.

В данном режиме набираемые команды не отображаются на экране.

Режим командной строки

Режим командной строки позволяет производить более глобальные операции с текстом: записывать отредактированный текст в файл, считывать новый файл, выходить из vi, производить настройку редактора, поиск по шаблону, а также осуществлять некоторые функции редактирования.
Команды отображаются в нижней части экрана (в командной строке редактора).

Ввод текста

«Return» — создает пустую строку и переводит курсор в ее начало;

«Ctrl+H» — уничтожает последний введенный символ (это действие не отображается на экране до выхода в командный режим);

«Ctrl+[» или клавиша «Esc» — переводят редактор в командный режим.

В режиме ввода текста стрелочная клавиатура не работает.

Команды

i — переход в режим набора методом вставки перед текущим символом;
a — переход в режим набора методом вставки за текущим символом;
R — переход в режим набора текста методом набивки.

Перемещение курсора

h, j, k, l — на один символ (одну строку), как показано стрелками;
^ или 0 — в начало текущей строки;
$ — в конец текущей строки;
w — на слово вправо;
b — на слово влево;
} — на параграф вперед (параграф — это блок текста, отделенный пустой строкой);
{ — на параграф назад;
[[ — в начало текста;
]] — в конец текста.
Кнопки стрелочной клавиатуры также позволяют перемещаться по тексту.

Редактирование

dd — стирание текущей строки;

d<движение_курсора> — стирание от текущего положения курсора до нового, задаваемого символом перемещения курсора. Нажатие кнопок стрелочной клавиатуры не является движением курсора и не может использоваться в комбинированных командах;

J — слияние текущей строки со следующей;

u — отмена последней команды;

. — повтор последней команды;

: — переход в режим командной строки.

Командная строка

:q или :q! — выход из редактора без сохранения изменений;

:x- выход из редактора с записью, если файл был модифицирован;

:w или w <имя_файла> или w! <имя_файла> — запись файла и возвращение в командный режим;

:e <имя_файла> или :e! <имя_файла> — загрузка файла <имя_файла>;

:r <имя_файла> — добавить содержимое указанного файла к редактируемому сразу за текущей строкой;

:set nu — включить нумерацию строк;

:set nonu — отключить нумерацию строк;

:!command — выполнить команду UNIX, не покидая редактора;

:/word — выполнить поиск слова word в тексте;

:/ — повторить поиск слова word далее по тексту.

Блоки, буферы, окна редактирования. Повторители

Повторители

Командам и движениям курсора можно давать повторители (числа), например:
2w — передвинуть курсор на два слова вперед;
10l — передвинуть курсор на десять символов вправо;
d10l — стереть десять символов справа от курсора;
2d10l — стереть двадцать символов справа от курсора;
5J — слить пять последующих строк в одну;
4. — повторить последнюю введенную команду четыре раза.

Буферы vi

Редактор имеет три типа буферов: буфер стирания (0-9), неименованный буфер и именованные буферы (a-z).

В буферы стирания автоматически заносятся стираемые элементы. В буфере 0 хранится последний стертый элемент, в буфере 1 — предпоследний и т. д.

Занести в буфер:

yy — занести текущую строку в неименованный буфер;

y<движение_курсора> — занести указанный движением курсора блок текста в неименованный буфер;

«ayy — занести текущую строку в именованный буфер «a»;

«Ayy — добавить текущую строку к содержимому именованного буфера «a»;

«by10j — занести последующие 10 строк в именованный буфер «b».

Вставить из буфера:

p — вставить в текущую позицию содержимое неименованного буфера;

«ap — вставить в текущую позицию содержимое именованного буфера «a»;

«1p — вставить в текущую позицию содержимое буфера стирания «1».

Многооконное редактирование

Редактировать сразу несколько файлов можно либо пользуясь командной редактора :e <имя_файла>, либо указав все необходимые файлы в командной строке при вызове редактора (например: vi <файл_1> <файл_2> <файл_3>). В последнем случае вы двигаетесь по списку файлов с помощью команд:
:n — переходим к следующему файлу в списке;
:rew — возвращаемся к редактированию первого файла в списке.
Именованные буферы сохраняют свое содержимое при переходе к редактированию другого файла.

Открыть/создать файл

vi mamapapa.txt — открыть один файл.

vi mama.txt papa.txt — открыть файл mama.txt, после выхода из него открыть файл papa.txt.

Файл открывается в командном режиме с помощью команды vi. Здесь мы можем просмотреть файл, переместиться по его содержимому, стереть текст, но внести изменения или ввести текст в этом режиме нельзя.

Создание файла происходит при помощи той же команды. Создание файла происходит в момент сохранения.

Для открытия или создания нового файла в командном режиме необходимо выполнить команду:

:e <имя_файла>

Перед этим нужно сохранить предыдущий файл:

:w — сохраняет файл с существующим именем;
:sav <имя_файла> — «Сохранить как».

Дополнительные опции

Дополнительные возможности редактора:

Команда Описание команды
G перейти в конец файла
<number>G перейти на конкретную строку <number>
:<number> перейти на <number> строк вперед
:set nu[mber] отобразить слева нумерацию строк (^ nonu[mber] — спрятать нумерацию)
:set wrap переносить длинные строки (:set nowrap — не переносить)
:syntax on/off включить/выключить подсветку синтаксиса
:colorscheme <name> задать цветовую тему (где <name> — имя темы, TAB работает как авто-дополнение)
/мама поиск текста «мама» в файле
n повторить поиск
:h или :help список возможной помощи (:viusage, :exusage)
:set fileformat=dos :set fileformat=unix привести концы строк в файле к виду dos или unix, соответственно
:set ts=4 задать размер табуляции в 4 пробела

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.

Print Friendly, PDF & Email