stringtranslate.com

vi (текстовый редактор)

vi (произносится как отдельные буквы, / ˌ v ˈ / ) [1] — это экранно-ориентированный текстовый редактор , изначально созданный для операционной системы Unix . Переносимое подмножество поведения vi и программ на его основе, а также язык ex- редактора, поддерживаемый в этих программах, описывается (и, таким образом, стандартизируется) Единой спецификацией Unix и POSIX . [2]

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

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

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

История

Создание

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

vi был получен из последовательности редакторов командной строки UNIX, начиная с ed , который был строковым редактором, предназначенным для работы на телетайпах , а не на дисплейных терминалах . В корпорации AT&T , где зародился ed, люди, похоже, были довольны таким простым и недружелюбным редактором, как ed, вспоминает Джордж Кулурис : [8]

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

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

Вдохновленные em и собственными изменениями в ed, [3] Билл Джой и Чак Хейли, аспиранты Калифорнийского университета в Беркли , взяли код em, чтобы создать en, [3] [10] , а затем «расширили» en для создания бывшая версия 0.1. [3] После ухода Хейли Брюс Энглар предложил Джой перепроектировать редактор, [11] что он и сделал с июня по октябрь 1977 года, добавив полноэкранный визуальный режим в ex [12] — который впоследствии стал vi. [13]

vi и ex используют общий код; vi — это двоичный запуск ex с возможностью отображения редактируемого текста на компьютерном терминале — это визуальный режим ex. [13] Название vi происходит от сокращенной команды ex ( vi) для входа в визуальный режим изнутри. Полная команда, делающая то же самое, была visual, [13] [14] , а название vi в более поздней литературе объясняется как сокращение визуального слова . viтакже является командой оболочки для запуска ex/vi в визуальном режиме напрямую из оболочки . [13]

По словам Джой, многие идеи этого визуального режима были взяты из Bravo — бимодального текстового редактора, разработанного в Xerox PARC для Alto . В интервью о происхождении vi Джой сказала: [3]

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

Раскладка клавиатуры терминала АДМ-3А

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

Распределение

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

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

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

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

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

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

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

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

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

Порты и клоны

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

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

В 1983 году vi был одним из нескольких инструментов UNIX, доступных для операционной системы UNOS компании Charles River Data Systems по лицензии Bell Laboratories . [24]

Хотя коммерческие поставщики могли работать с кодовой базой Билла Джоя, многие люди не могли. Поскольку Джой начала с редактора Кена Томпсона , ex и vi были производными работами и не могли распространяться, кроме как среди людей, имевших лицензию на исходный код AT&T . [ нужна цитата ] Тем, кто хочет бесплатный редактор в стиле Unix, придется поискать в другом месте. К 1985 году версия Emacs ( MicroEMACS ) была доступна для множества платформ, но только в июне 1987 года появился STEVIE (ST Editor for VI Enthusiasts), ограниченный клон vi для Atari ST . [25] [26] В начале января 1990 года Стив Киркендалл опубликовал новый клон vi, Elvis , в группе новостей Usenet comp.os.minix, стремясь создать более полный и более точный клон vi, чем STEVIE. [27] Это быстро вызвало значительный интерес в ряде сообществ энтузиастов. [28] Эндрю Таненбаум быстро попросил сообщество выбрать один из этих двух редакторов в качестве клона vi в Minix ; [29] Был выбран Элвис, который и сегодня остается клоном vi для Minix.

В 1989 году Линн Джолитц и Уильям Джолитц начали портировать BSD Unix для работы на процессорах класса 386 , но для создания бесплатного дистрибутива им нужно было избегать любого кода, загрязненного AT&T, включая код vi Джой. Чтобы заполнить пустоту, оставшуюся после удаления vi, в их дистрибутиве 386BSD 1992 года был принят Elvis. Потомки 386BSD, FreeBSD и NetBSD , последовали этому примеру. Но в Калифорнийском университете в Беркли Кейт Бостик хотел создать «совместимую с ошибками» замену vi Joy для 4.4BSD-Lite. Используя Elvis Киркендалла (версия 1.8) в качестве отправной точки, Bostic создал nvi и выпустил его северной весной 1994 года. использовать сегодня. [30]

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

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

Влияние

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

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

Интерфейс

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

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

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

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

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

Стартовый экран vi clone vim

Смотрите также

Рекомендации

  1. ^ Computerphile (9 июля 2018 г.), EXTRA BITS GREP от ED и текстовых редакторов - Computerphile - Computerphile, заархивировано из оригинала 18 ноября 2021 г. , получено 17 апреля 2020 г.
  2. ^ IEEE и Открытая группа (2013). «vi — экранно-ориентированный (визуальный) редактор отображения», Базовые спецификации открытой группы, выпуск 7; IEEE Std 1003.1, издание 2013 г.» . Проверено 15 июля 2013 г.
  3. ^ abcdefgh «Интервью с Биллом Джоем». Архивировано из оригинала 10 февраля 2012 года . Проверено 3 июня 2017 г.
  4. ^ «Второе руководство по распространению программного обеспечения Беркли» . Рогель ife.org . Проверено 27 марта 2018 г.
  5. ^ Джой, Уильям; Хортон, Марк. «Введение в редактирование дисплея с помощью Vi» (PDF) . freebsd.org . Проверено 6 февраля 2019 г.
  6. ^ "Жаргонный лексикон". Хакерский словарь 4.3.0 . 30 апреля 2001 года . Проверено 6 февраля 2019 г.
  7. Грей, Джеймс (1 июня 2009 г.). «Выбор читателей 2009». Linux-журнал . Проверено 22 января 2010 г.
  8. ^ abc Четверть века UNIX , Питер Х. Салус, Аддисон-Уэсли, 1994, страницы 139–142. (отрывок доступен в Интернете)
  9. ^ "Исходный код для них" . www.coulouris.net . Февраль 1976 года.
  10. ^ аб Вэнс, Эшли (11 сентября 2003 г.). «Величайший подарок Билла Джоя человечеству – редактор vi». Регистр . Архивировано из оригинала 13 мая 2012 года . Проверено 30 июня 2012 г.
  11. ^ abc Джой, Билл. ex Справочное руководство (источник roff) . 4.4 BSD (обремененная, не Lite). CSRG, Калифорнийский университет в Беркли.(см. раздел «Благодарности» в конце файла)
  12. ^ «Смотрите даты в заголовках об авторских правах, например, исходный код 1.1» . minnie.tuhs.org .
  13. ^ abcd «История и эффективное использование Vim». begriffs.com . Проверено 27 августа 2021 г.
  14. ^ Джой, Уильям Н. (ноябрь 1977 г.) [ноябрь 1977 г.]. «Сводка команд». Справочное руководство по взрывозащите, версия 1.1 (PDF) . Беркли, Калифорния. п. 8. Архивировано (PDF) из оригинала 14 апреля 2020 г.{{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  15. ^ "version.c, исходный код ex 1.1" . minnie.tuhs.org .
  16. ^ "1BSD/READ_ME" (источник roff) .Формат: «Лента с программным обеспечением Berkeley UNIX» (PDF) . Архивировано из оригинала (PDF) 18 июля 2011 года . Проверено 27 декабря 2010 г.
  17. ^ "makefile, исходный код ex 2.0" . minnie.tuhs.org .
  18. ^ "ЧИТАТЬ_МЕ". исходный код ex 2.0 .
  19. ^ «Исходный код ex 3.1» .
  20. ^ МакМахон, Мэрилин; Патнэм, Роберт (2 апреля 1984 г.). «Первый взгляд на PC-IX». Инфомир . стр. 39–42 . Проверено 25 февраля 2016 г. .
  21. ^ abc «Журнал изменений для vi, версии 2.1–3.7». minnie.tuhs.org .
  22. ^ Радость, Билл. vi Справочное руководство (источник roff) . 4.4 BSD (обремененная, не Lite). CSRG, Калифорнийский университет в Беркли.(см. раздел «Благодарности» в конце файла)
  23. ^ Кеннет Х. Розен; Дуглас А. Хост; Рэйчел Кли (2006). UNIX: полный справочник. Макгроу-Хилл Осборн Медиа. п. 10. ISBN 978-0-07-226336-7.
  24. ^ Путеводитель по Вселенной для инсайдеров (PDF) . Charles River Data Systems, Inc., 1983. с. 13.
  25. Томпсон, Тим (26 марта 2000 г.). «Стиви» . Проверено 29 декабря 2010 г.
  26. Тим Томпсон (28 июня 1987 г.). «Мини-ви для ST». Группа новостей : comp.sys.atari.st. Usenet:  [email protected] . Проверено 29 декабря 2010 г.
  27. Стив Киркендалл (20 апреля 1990 г.). «Скоро выйдет новый клон vi: ELVIS». Группа новостей : comp.editors. Usenet:  [email protected] . Проверено 29 декабря 2010 г.(обсуждается январская публикация comp.os.minix и цели дизайна)
  28. ^ Usenet, различные группы новостей (comp.editors, comp.sys.*, comp.os.*), 1990 г.
  29. Эндрю С. Таненбаум (18 января 1990 г.). «Элвис против Стиви». Группа новостей : comp.os.minix. Usenet:  [email protected] . Проверено 29 декабря 2010 г.
  30. ^ abc Роббинс, Арнольд; Ханна, Эльберт; Лэмб, Линда (2008). «Глава 16: nvi: Новый vi». Изучение редакторов vi и vim (7-е изд.). O'Reilly Media, Inc., стр. 307–308. ISBN 978-0-596-52983-3.
  31. ^ Файл изменений из Traditional Vi Гуннара Риттера.
  32. ^ «Лицензия Caldera для 32-битной 32-вольтовой UNIX и 16-битной UNIX версий 1, 2, 3, 4, 5, 6, 7» (PDF) . mckusick.com .
  33. ^ «Традиционный vi». СоурсФордж . 7 марта 2013 года . Проверено 24 июля 2023 г.
  34. ^ Смит, TJ (4 декабря 2001 г.). «EMACS против vi: бесконечная «священная война» компьютерщиков». Linux.com . Проверено 30 января 2018 г.
  35. ^ Раймонд, Эрик С. , изд. (1996). Словарь нового хакера (3-е изд.). МТИ Пресс. ISBN 0-262-68092-0.
  36. ^ "Спросите Архив Тима" . О'Рейли. 21 июня 1999 года.
  37. ^ И. Скотт Маккензи (2013). Взаимодействие человека и компьютера: перспектива эмпирического исследования . Морган Кауфманн, отпечаток Elsevier. п. 1. ISBN 978-0-12-405865-1.
  38. Вугт, Сандер ван (21 ноября 2015 г.). Начало командной строки Linux. Апресс. п. 75. ИСБН 9781430268291.
  39. ^ «Документация Vim: параметры» . vim.net/sourceforge.net . Проверено 30 января 2009 г.
  40. ^ «Документация Vim: запуск». vim.net/sourceforge.net . Проверено 30 января 2009 г.
  41. ^ Брэм Муленаар (18 апреля 2005 г.). «Интервью: Брэм Муленаар». LinuxEXPRES (Интервью) (на чешском языке). Беседовал Лукаш Заплетал. стр. 21–22 . Проверено 5 февраля 2015 г.
    Английский перевод: «Интервью: Брэм Муленаар». Moolenaar.net . Архивировано из оригинала 19 сентября 2012 года. Является ли VIM производным от другого клона VI или вы начали с нуля? Я начал со Стиви. Это был клон Vi для компьютера Atari ST, портированный на Amiga. У него было довольно много проблем, и он не мог делать все, что мог Vi, но, поскольку исходный код был доступен, я мог исправить это сам.
  42. ^ Вердулаге, Свен. «Разрабатываемые версии nvi» . Проверено 1 января 2011 г.
  43. ^ Бостик, Кейт. «Домашняя страница редактора Berkeley Vi» . Архивировано из оригинала 5 декабря 2006 года . Проверено 1 января 2011 г.

дальнейшее чтение

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