vi | |
---|---|
![]() vi, редактирующий программу Hello, world! на языке Си. Тильды обозначают строки, отсутствующие в файле. | |
Тип | Текстовый редактор |
Автор | Билл Джой |
Разработчик | Билл Джой |
Написана на | Си[1] |
Операционная система | Unix-подобные |
Первый выпуск | 1976 |
Последняя версия | |
Репозиторий | ex-vi.cvs.sourceforge.net/… |
Лицензия | Лицензия BSD или CDDL |
Сайт | ex-vi.sourceforge.net (англ.) |
![]() |
В статье есть список источников, но не хватает сносок. |
vi (от англ. visual, по-русски читается «ви-ай») — серия текстовых редакторов операционных систем семейства UNIX.
Первая версия была написана Биллом Джоем в 1976 году.
В то время наиболее распространённым был редактор ed. Поскольку он был довольно сложным для «простого смертного», George Coulouris разработал редактор em (англ. editor for mortals — «редактор для смертных»). Билл Джой модифицировал редактор em и назвал его en, а позже на его основе создал ex, в котором появился визуальный режим, вызывавшийся командой vi. Так как пользователи больше времени проводили в визуальном режиме, ex 2.0, ставший частью 2BSD, сразу запускался уже в нём. Так появился vi, бывший в то время всего лишь жёсткой ссылкой на ex[3].
Редактор писался для терминала ADM-3A, имевшего ограниченную клавиатуру: на ней не было выделенных клавиш-стрелок, а из модификаторов доступны только ⇧ Shift и частично Ctrl[прим 1]. Эти обстоятельства повлияли на выбор используемых в редакторе клавиш.
В отличие от многих привычных редакторов, vi имеет модальный интерфейс. Это означает, что одни и те же клавиши в разных режимах работы выполняют разные действия. В редакторе vi есть два основных режима: командный режим и режим вставки. По умолчанию работа начинается в командном режиме.
В режиме вставки клавиатура используется для набора текста. Для выхода в командный режим используется клавиша Esc или комбинация Ctrl+c.
В командном режиме алфавитные клавиши соответствуют командам перемещения и изменения текста. Так, команды h
, j
, k
, l
перемещают курсор на одну позицию влево, вниз, вверх, вправо соответственно, команда x
удаляет один символ и т. д. Это позволяет работать без необходимости использования дополнительной клавиатуры и клавиш-модификаторов, таких, как Ctrl, Alt и т. д. Более сложные операции редактирования получаются комбинацией простых, например, 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 с расширенной функциональностью:
Некоторые внешние ссылки в этой статье ведут на сайты, занесённые в спам-лист |