Русская Википедия:Vi

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Lowercase Шаблон:Карточка программыШаблон:Нет сносок

vi (от Шаблон:Lang-en, по-русски читается «ви-ай») — серия текстовых редакторов операционных систем семейства UNIX.

История

Первая версия была написана Биллом Джоем в 1976 году.

В то время наиболее распространённым был редактор ed. Поскольку он был довольно сложным для «простого смертного», George Coulouris разработал редактор em (Шаблон:Lang-en — «редактор для смертных»). Билл Джой модифицировал редактор em и назвал его en, а позже на его основе создал ex, в котором появился визуальный режим, вызывавшийся командой vi. Так как пользователи больше времени проводили в визуальном режиме, ex 2.0, ставший частью 2BSD, сразу запускался уже в нём. Так появился vi, бывший в то время всего лишь жёсткой ссылкой на ex[1].

Редактор писался для терминала ADM-3A, имевшего ограниченную клавиатуру: на ней не было выделенных клавиш-стрелок, а из модификаторов доступны только  ⇧ Shift  и частично  Ctrl [прим 1]. Эти обстоятельства повлияли на выбор используемых в редакторе клавиш.

Интерфейс

В отличие от многих привычных редакторов, vi имеет модальный интерфейс. Это означает, что одни и те же клавиши в разных режимах работы выполняют разные действия. В редакторе vi есть два основных режима: командный режим и режим вставки. По умолчанию работа начинается в командном режиме.

В режиме вставки клавиатура используется для набора текста. Для выхода в командный режим используется клавиша Шаблон:Key или комбинация Шаблон:Key.

В командном режиме алфавитные клавиши соответствуют командам перемещения и изменения текста. Так, команды h, j, k, l перемещают курсор на одну позицию влево, вниз, вверх, вправо соответственно, команда x удаляет один символ и т. д. Это позволяет работать без необходимости использования дополнительной клавиатуры и клавиш-модификаторов, таких, как Шаблон:Key, Шаблон:Key и т. д. Более сложные операции редактирования получаются комбинацией простых, например, 2dw удаляет два слова. Для полнотекстовых операций имеется возможность задавать команды ex в подобии командной строки, например, :1,.s/wiki/[[wiki]]/g заключит все вхождения последовательности символов wiki от начала текста до текущей позиции в двойные квадратные скобки.

Часто используемые команды

  • /str — Поиск строки str вперед. str может быть регулярным выражением
  • ?str — Поиск строки str назад
  • n — Повторить поиск в том же направлении
  • N — Повторить поиск в обратном направлении
  • :[range]s/old/new/[g] — Заменить old на new в указанном диапазоне строк range. new и old могут быть регулярными выражениями, а range задается аналогично диапазону строк в редакторе ed. Например, для диапазона строк с 32 по 64 range будет 32,64, первая строка соответствует 1, последняя задается через символ $. Суффикс g означает заменить все вхождения old в строке, а не только первое.
  • :e! — перезагрузить текущий файл
  • :33 — переместиться на 33-ю строку текстового файла
  • i — перейти в режим редактирования
  • a — перейти в режим редактирования после текущего символа
  • u — отменить последнее действие
  • . — повторить последнее действие
  • x — вырезать символ под курсором
  • yy — копировать строку
  • dd — вырезать строку
  • p — вставить
  • J — склеить две строки
  • :w — сохранить файл на диске
  • :wq — выход с сохранением файла
  • ZZ — выход с сохранением файла
  • :q — выход
  • :q! — выход без сохранения файла
  • ZQ — выход без сохранения файла
  • :r — вставить в документ другой файл

Чтобы получить подробную помощь по редактору vi, выполните команду man vi в Unix shell (q — выход из справки).

Другие редакторы

Шаблон:Незавершенный раздел Спор между сторонниками vi и emacs является классическим примером «религиозных войн».

Клоны vi

Существуют клоны редактора vi с расширенной функциональностью:

См. также

Примечания

Шаблон:Примечания Шаблон:Примечания

Ссылки

Шаблон:Текстовые редакторы Шаблон:Команды Unix


Ошибка цитирования Для существующих тегов <ref> группы «прим» не найдено соответствующего тега <references group="прим"/>