vi - vi

редактировать
Текстовый редактор, ориентированный на клавиатуру

vi
vi, редактировать программу Hello World на C. Тильда означает строки, отсутствующие в файле.
Разработчик (и) Билл Джой
Первоначальный выпуск1976; 44 года назад (1976)
Репозиторий Измените в Викиданных
Написано наC
Операционная система Unix-подобная
Тип
Лицензия Лицензия BSD или CDDL
Веб-сайтex-vi.sourceforge.net Измените это в Викиданных

vi(произносится отдельными буквами, ) - это экранно-ориентированный формат, изначально созданный для операционной системы Unix. Переносимое подмножество поведения vi и программ на его основе, а также язык редактора, поддерживаемый в этих программах, описывается (и, таким образом, стандартизируется) Single Unix Specification и POSIX.

Исходный код для vi был написан Биллом Джоем в 1976 году в качестве визуального режима для вызываемого бывшего, который Джой написал вместе с Чаком Хейли. Ex 1.1 Билла Джоя был выпущен как часть первой версии Berkeley Software Distribution (BSD) Unix в марте 1978 года. Это было только в версии 2.0 ex, выпущенной как часть Second BSD. в мае 1979 года редактор был установлен под именем «vi» (которое переводило пользователей прямо в визуальный режим ex), и под этим именем он известен сегодня. Некоторые текущие реализации vi могут проследить происхождение исходного кода до Билла Джоя; другие представляют собой совершенно новые, в значительной степени совместимые реализации.

Имя «vi» происходит от кратчайшего однозначного сокращения для команды ex visual, которая переключает ex в режим. Название произносится как (английские буквы v и i).

В дополнение к различным не- свободным программам варианты vi, распространяемые с проприетарными реализациями Unix, vi был открыт с OpenSolaris, и существует несколько бесплатных клонов vi с открытым исходным кодом. Опрос читателей Linux Journal в 2009 году показал, что vi был наиболее широко используемым текстовым редактором среди респондентов, опередив второй по популярности редактор почти в два раза (от 36% до 19%).

Содержание

  • 1 История
    • 1.1 Создание
    • 1.2 Распространение
    • 1.3 Порты и клоны
    • 1.4 Влияние
  • 2 Интерфейс
  • 3 Современные производные и клоны
  • 4 См. Также
  • 5 Ссылки
  • 6 Дополнительная литература
  • 7 Внешние ссылки

История

Создание

Билл Джой, первоначальный создатель редактора vi

vi был заимствован из последовательность редакторов командной строки UNIX, начиная с, который был строковым редактором, предназначенным для работы с телепринтерами, а не с терминалами отображения. В ATT Corporation, где зародился ed, люди, похоже, были довольны таким простым и недружелюбным редактором, как ed, Джордж Кулурис вспоминает:

[...] в течение многих лет, у них не было подходящих клемм. Они долгое время использовали TTY и другие печатные терминалы, а когда они купили экраны для всех, они получили Tektronix 4014s. Это были большие дисплеи с трубками для хранения . Вы не можете запустить редактор экрана на дисплее трубки хранения, так как изображение не может быть обновлено. Таким образом, кто-то другой должен был стать пионером экранного редактирования для Unix, и это было нами изначально, и мы продолжали это делать в течение многих лет.

Кулурис считал загадочные команды ed подходящими только для «бессмертных», и поэтому в феврале 1976 года он улучшил ed (используя исходный код Кена Томпсона в качестве отправной точки), чтобы сделать em («редактор для смертных») работая лектором в Колледже Королевы Мэри. Редактор em был разработан для терминалов с дисплеем и был визуальным редактором с одной строкой за раз. Это была одна из первых программ в Unix, интенсивно использующих «режим сырого терминального ввода», в котором выполняемая программа, а не драйвер терминального устройства, обрабатывала все нажатия клавиш. Когда Кулурис посетил Калифорнийский университет в Беркли летом 1976 года, он принес DECtape, содержащий их, и показал редактору разным людям. Некоторые люди считали этот новый тип редактора потенциальным потребителем ресурсов, но другие, в том числе Билл Джой, были впечатлены.

Вдохновленный ими и их собственными настройками ed, Билл Джой и Чак Хейли, оба аспиранты в Калифорнийском университете в Беркли, взяли код из em, чтобы сделать en, а затем «расширили» en, чтобы создать версию 0.1. После ухода Хейли Брюс Инглар призвал Джоя изменить дизайн редактора, что он и сделал с июня по октябрь 1977 года, добавив к примеру полноэкранный визуальный режим.

Многие идеи из визуального режима бывшего (он же vi) были взяты. из другого программного обеспечения, существовавшего в то время. По словам Билла Джоя, вдохновение для визуального режима vi пришло из редактора Bravo, который был бимодальным редактором. В интервью о происхождении vi Джой сказал:

Многие идеи для режима редактирования экрана были украдены из руководства Bravo, которое я тайком просмотрел и скопировал. Точка на самом деле является двойным выходом из Браво, команды повтора. Большая часть вещей была украдена. Были украдены некоторые вещи - у нас есть справочная страница для торонтской версии ed, к которой, я думаю, Роб Пайк имеет какое-то отношение. Мы взяли из этого некоторые расширения регулярных выражений.

ADM-3A раскладка клавиатуры терминала

Джой использовал терминал Lear Siegler ADM-3A. На этом терминале клавиша Escape находилась в том месте, где теперь находится клавиша Tab на широко используемой клавиатуре IBM PC (слева от буквенного часть клавиатуры, на один ряд выше среднего ряда). Это сделало его удобным выбором для переключения режимов vi. Кроме того, клавиши h, j, k, l выполняли двойную функцию в качестве клавиш перемещения курсора и были отмечены стрелками, поэтому vi использует их таким образом. У ADM-3A других клавиш управления курсором не было. Джой объяснил, что короткие односимвольные команды и возможность печатать перед дисплеем были результатом медленного 300 бод модема, который он использовал при разработке программного обеспечения, и что он хотел работать продуктивно, когда экран рисует медленнее, чем он мог подумать.

Распространение

Джой был ответственен за создание первой версии BSD Unix в марте 1978 года, включая ex 1.1 (от 1 февраля 1978 года).) в дистрибутиве, тем самым открыв доступ к его редактору аудитории за пределами Калифорнийского университета в Беркли. Начиная с этого выпуска BSD Unix, единственными редакторами, которые поставлялись с системой Unix, были ed и ex. В интервью 1984 года Джой объяснил большую часть успеха vi тем фактом, что он был включен в пакет бесплатно, тогда как другие редакторы, такие как Emacs, могли стоить сотни долларов.

В конце концов. было замечено, что большинство бывших пользователей проводили все свое время в визуальном режиме, и поэтому в ex 2.0 (выпущенном как часть Second Berkeley Software Distribution в мае 1979 г.) Джой создал vi как жесткую ссылку на ex, так что при вызове как vi ex автоматически запускается в визуальном режиме. Таким образом, vi не является развитием ex, vi - это ex.

Джой описал ex 2.0 (vi) как очень большую программу, едва умещающуюся в памяти PDP-11/70, поэтому, хотя vi можно рассматривать как маленькую, легкий, программный сегодня, он не видел такого в начале своей истории. К версии 3.1, поставляемой с 3BSD в декабре 1979 года, полная версия vi больше не могла уместиться в памяти PDP-11; редактор также был бы слишком велик для запуска на PC / IX для IBM PC в 1984 году.

Джой продолжал быть ведущим разработчиком vi до версии 2.7 in В июне 1979 года и время от времени вносил вклад в разработку vi, по крайней мере, до версии 3.5 в августе 1980 года. Обсуждая происхождение vi и почему он прекратил разработку, Джой сказал:

Мне жаль, что мы не использовали все клавиши на клавиатуре.. Я думаю, что одна из интересных вещей заключается в том, что vi на самом деле является редактором на основе режима . Я думаю, что с редакторами, основанными на режимах, это довольно хорошо. Однако одним из достоинств EMACS является его программируемость и немодальность. Это две идеи, которые никогда не приходили мне в голову. Я также не очень хорошо разбирался в оптимизации кода, когда писал vi. Я думаю, что модуль повторного отображения редактора практически неразрешим. Он действительно хорошо справляется со своей задачей, но когда вы пишете программы во время обучения... Вот почему я перестал над этим работать.

На самом деле произошло то, что я был в процессе добавления мультиокон в vi, когда мы установили наш VAX, что должно было произойти в декабре 1978 года. У нас не было резервных копий, и ленточный накопитель сломался. Я продолжал работать, даже не имея возможности делать резервные копии. А потом исходный код был искажен, и у меня не было полного списка. Я почти переписал весь код отображения для Windows, и тогда я сдался. После этого я вернулся к предыдущей версии и просто задокументировал код, закончил руководство и закрыл его. Если бы этого не произошло, у vi было бы несколько окон, и я мог бы добавить некоторую программируемость, но я не знаю.

Основная проблема vi заключается в том, что у него нет мыши, и поэтому у вас есть все эти команды. В некотором смысле это наоборот от того, что вы получили бы от ориентированной на мышь вещи. Я думаю, что несколько уровней отмены тоже было бы замечательно. Но по сути, vi все еще находится внутри. Вы не можете обмануть это.

Это похоже на одну из тех пиньят - вещей, внутри которых есть конфеты, но сверху покрыты слой за слоем папье-маше. На самом деле у него нет единой концепции. Думаю, если бы я собирался вернуться - я бы не вернулся, а начну сначала.

В 1979 году Мэри Энн Хортон взяла на себя ответственность за vi. Horton добавил поддержку стрелок и функциональных клавиш, макросов и улучшил производительность, заменив termcap на terminfo.

Порты и клоны

Редактор vi в OpenBSD (nvi ) при запуске, редактирование временного пустого файла Редактор vi в OpenBSD, редактирование небольшого «Hello, world!» типа Ruby программа

До версии 3.7 vi, созданной в октябре 1981 г., Калифорнийский университет в Беркли был центром разработки vi, но с уходом Билла Джоя в начале 1982 г. он присоединился к Sun Microsystems и ATT UNIX System V (январь 1983 г.) с переходом на vi, изменения в кодовой базе vi происходили медленнее и более рассредоточенным и несовместимым образом. В Калифорнийском университете в Беркли были внесены изменения, но номер версии никогда не обновлялся выше 3.7. Коммерческие поставщики Unix, такие как Sun, HP, DEC и IBM, получили копии исходного кода vi и их операционных систем, Solaris, HP- UX, Tru64 UNIX и AIX, сегодня продолжают поддерживать версии vi, непосредственно унаследованные от выпуска 3.7, но с дополнительными функциями, такими как настраиваемые сопоставления ключей, шифрование, и широкая поддержка персонажей.

В то время как коммерческие поставщики могли работать с кодовой базой Билла Джоя (и продолжать использовать ее сегодня), многие люди не могли. Поскольку Joy начал с редактора Кена Томпсона, ex и vi были производными работами и не могли распространяться, кроме как людям, имеющим лицензию на исходный код ATT. Людям, которые ищут бесплатный редактор в стиле Unix, придется искать в другом месте. К 1985 году версия Emacs (MicroEMACS ) была доступна для множества платформ, но только в июне 1987 года (ST Editor for VI Enthusiasts), ограниченный клон vi. В начале января 1990 года Стив Киркендалл разместил новый клон vi в группе новостей Usenet comp.os.minix, стремясь создать более полный и точный клон vi, чем STEVIE. Он быстро привлек значительный интерес в ряде сообществ энтузиастов. Эндрю Таненбаум быстро попросил сообщество выбрать одного из этих двух редакторов, который будет клоном vi в Minix ; Был выбран Элвис, который и сегодня остается клоном vi для Minix.

В 1989 г. Линн Джолитц и Уильям Джолитц начали перенос BSD Unix для работы на процессорах класса 386, но на создать бесплатный дистрибутив, необходимый им, чтобы избежать заражения кода ATT, включая Joy's vi. Чтобы заполнить пустоту, оставшуюся после удаления vi, в их дистрибутиве 1992 386BSD был принят Элвис в качестве замены vi. Потомки 386BSD, FreeBSD и NetBSD, последовали его примеру. Но в Калифорнийском университете в Беркли Кейт Бостик хотел получить замену vi Joy для BSD 4.4 Lite, "совместимую с ошибками". Используя Элвис Киркендалла (версия 1.8) в качестве отправной точки, Bostic создал nvi, выпустив его северной весной 1994 года. Когда FreeBSD и NetBSD повторно синхронизировали кодовую базу 4.4-Lite2, они тоже переключились на nvi от Bostic, которые они продолжают использовать и сегодня.

Несмотря на существование клонов vi с расширенными наборами функций, где-то до июня 2000 года Гуннар Риттер перенес кодовую базу vi Joy (взятую из 2.11BSD, февраль 1992 года) на современные операционные системы на базе Unix., например Linux и FreeBSD. Первоначально его работа была технически незаконной для распространения без лицензии исходного кода ATT, но в январе 2002 года эти правила лицензирования были смягчены, разрешив легальное распространение как проект с открытым исходным кодом. Риттер продолжал вносить небольшие улучшения в кодовую базу vi, аналогичные тем, которые делали коммерческие поставщики Unix, все еще использующие кодовую базу Joy, включая изменения, требуемые стандартом POSIX.2 для vi. Его работа доступна как Traditional Vi и сегодня работает на различных системах.

Но хотя vi Joy теперь снова был доступен для BSD Unix, он появился после того, как различные варианты BSD взяли на себя обязательства по использованию nvi, который обеспечивает ряд улучшений по сравнению с традиционным vi и отбрасывает некоторые из его унаследованных функций ( например, открытый режим для редактирования по одной строке за раз). В некотором смысле странная инверсия состоит в том, что BSD Unix, с которой началась кодовая база Joy vi, больше не использует ее, а Unix-системы , производные от ATT, в которых в первые дни не было редактора Joy, - это те, которые теперь используют и поддерживают модифицированные версии его кода.

Воздействие

За годы, прошедшие с момента своего создания, vi стал де-факто стандартным редактором Unix и любимым хакером за пределами MIT до появления Emacs примерно после 1984 года. Единая спецификация UNIX определяет vi, поэтому он должен быть в каждой соответствующей системе.

vi до сих пор широко используется пользователями операционных систем семейства Unix. Около половины респондентов в опросе 1991 USENET предпочли vi. В 1999 году Тим О'Рейли, основатель одноименной компании по изданию компьютерных книг, заявил, что его компания продала больше копий своей книги vi, чем книги emacs.

Интерфейс

В редакторе vi использовалась минимальная логика, которая могла бы помочь пользователю. Это включало в себя тривиальные вспомогательные средства, например, как соединить две строки вместе и обеспечить разумное использование пробелов. Редактор vi имеет ряд изменений; тем не менее, основная цель состояла в том, чтобы позволить пользователю наслаждаться полным "визуальным" экранным режимом современных терминалов.

vi - это модальный редактор: он работает либо в режиме вставки (когда печатный текст становится частью документа), либо в командном режим (где нажатия клавиш интерпретируются как команды, управляющие сеансом редактирования). Например, ввод iв командном режиме переключает редактор в режим вставки, но повторный ввод iв этот момент помещает в документ символ «i». В режиме вставки нажатие ESC переключает редактор обратно в командный режим. Воспринимаемое преимущество разделения vi режима ввода текста и команд состоит в том, что и редактирование текста, и командные операции могут выполняться без необходимости убирать руки пользователя с домашней строки. Поскольку немодальные редакторы обычно должны зарезервировать все клавиши с буквами и символами для печати символов, любые специальные команды для действий, кроме добавления текста в буфер, должны быть назначены клавишам, которые не производят символы, таким как функциональные клавиши или комбинации клавиш-модификаторов, таких как Ctrlи Altс обычными клавишами. Vi обладает тем свойством, что большинство обычных клавиш связаны с какой-либо командой для позиционирования, изменения текста, поиска и так далее, либо по отдельности, либо в виде комбинаций клавиш. Многие команды можно вводить касанием без использования Ctrlили Alt. Другие типы редакторов обычно требуют, чтобы пользователь убирал руки из исходного ряда, когда набирал касанием :

  • , чтобы использовать мышь для выбора текста, команд или пунктов меню в редакторе GUI.
  • К клавишам со стрелками или функциям редактирования (Home / End или Функциональные клавиши ).
  • Для вызова команд с помощью клавиш-модификаторов в сочетании со стандартными клавишами пишущей машинки.

Например, в vi замена слова - это cwтекст замены Escape, который представляет собой комбинацию двух независимых команд (изменение и движение слова) вместе с переходом в режим вставки и из него. Текст между позиция курсора и конец слова заменяются заменяющим текстом. Операцию можно повторить в другом месте, набрав ., в результате чего слово, начинающееся в этом месте, будет заменено таким же замещающий текст.

A Взаимодействие человека и компьютера на первой странице учебника отмечается, что «одна из классических слабостей пользовательского интерфейса - рассказана и пересказана HCI e дукаторы по всему миру - это отсутствие обратной связи редактора vi при переключении между режимами. Многие пользователи совершали ошибку, вводя ввод в командном режиме или вводя команду в режиме ввода ».

Современные производные и клоны

  • Традиционный Vi - это перенос оригинального vi на современные системы Unix. Гуннар Риттер. Незначительные улучшения включают 8-битный ввод, поддержку многобайтовых кодировок символов, таких как UTF-8, и функции, требуемые POSIX.2. Помимо этого, он содержит несколько дополнений, поэтому он представляет интерес для тех, кто ищет небольшой но четко определенная реализация vi близка к реализации большинства коммерческих Unix-систем. Он также имеет некоторые функции для работы с примитивными терминалами или медленными соединениями. Он доступен как часть коллекции портов FreeBSD, портов OpenBSD, MacPorts и RPM доступен для Linux из проекта OpenPKG. Риттер делает следующие заявления о традиционном Vi:

По сравнению с большинством его многочисленных клонов, оригинальный vi представляет собой довольно небольшую программу (код ~ 120 КБ на i386) только с чрезвычайно мощным интерфейсом редактирования, но без фа Функции ncy, такие как несколько отмен, несколько экранов или подсветка синтаксиса. Другими словами, это типичная программа Unix, которая делает именно то, что должна, и не более того.

Экран запуска vi clone
  • "Vi IMproved" имеет еще больше функций, чем vi, включая (с возможностью создания сценариев) подсветку синтаксиса, поддержку мыши, графические версии, визуальный режим, множество новых команд редактирования и большое количество расширений в области бывших команд. Vim включен почти в каждый дистрибутив Linux (а также входит в каждую копию Apple macOS ). Vim также имеет режим совместимости с vi, в котором Vim более совместим с vi, чем был бы в противном случае, хотя некоторые функции vi, такие как открытый режим, отсутствуют в Vim даже в режиме совместимости. Этот режим управляется параметром : установить совместимый. Он автоматически включается Vim при запуске в ситуации, которая выглядит так, как если бы можно было ожидать, что программа будет совместима с vi. Функции Vim, не противоречащие совместимости с vi, доступны всегда, независимо от настройки. Vim был получен из порта STEVIE на Amiga.
  • - бесплатный клон vi для Unix и других операционных систем, написанный Стивом Киркендаллом. Элвис представил ряд функций, которые теперь присутствуют в других клонах vi, включая возможность работы клавиш курсора в режиме ввода. Он был первым, кто обеспечил цветовую подсветку синтаксиса (и обобщил подсветку синтаксиса для нескольких типов файлов). Elvis 1.x использовался в качестве отправной точки для nvi, но Elvis 2.0 добавил множество функций, в том числе несколько буферов, окон, режимов отображения и схем доступа к файлам. Elvis - это стандартная версия vi, поставляемая на Slackware Linux, Kate OS и MINIX. Самая последняя версия Elvis - 2.2, выпущенная в октябре 2003 года.
  • nvi - это реализация текстового редактора ex / vi, изначально распространяемого как часть окончательного официального дистрибутива программного обеспечения Berkeley (4.4 BSD-Lite). Это версия vi, которая поставляется со всеми дистрибутивами с открытым исходным кодом на основе BSD. Он добавляет историю команд и редактирование, дополнения имен файлов, несколько буферов редактирования и многооконность (включая несколько окон в одном буфере редактирования). За пределами 1.79, с октября 1996 года, которая является рекомендуемой стабильной версией, были "разрабатываемые выпуски" nvi, последний из которых - 1.81.6, с ноября 2007 года.
  • ранняя версия Microemacs в попытке принести Emacs парадигму многооконного / многобуферного редактирования пользователям vi, и была впервые опубликована на Usenet ' s alt.sources в 1991 году. Он обеспечивает бесконечную отмену, совместимость с UTF-8, многооконные / многобуферные операции, язык расширения макросов, подсветку синтаксиса, перехватчики чтения и записи файлов и многое другое.
  • BusyBox, набор стандартных утилит Linux в одном исполняемом файле, включает крошечный клон vi.
  • Neovim, рефакторинг Vim, который он пытается заменить.
  • , повторная реализация vi с нуля с минимальный размер (<6kLOC) and dependencies. Supports UTF-8, редактирование двунаправленного текста и, как правило, имеет хорошее покрытие набора функций POSIX vi с некоторыми расширениями, такими как бесконечная отмена / повтор, базовый синтаксис выделение и частичная реализация ex (1).

См. также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

Дополнительная литература

Внешние ссылки

Викиучебники содержат больше информации по теме: Vi
Последняя правка сделана 2021-06-18 12:08:07
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте