Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Легковесные программы, распространяемые по свободной лицензии. Часть 2: GNU ed, vi, Vim


Автор: Владимир Царьков
Дата публикации: 21.08.2011

Продолжим начатый ранее рассказ о возможностях и особенностях легковесных программ, распространяемых согласно свободной лицензии.

В сегодняшней публикации делается попытка обзора существующей литературы о GNU ed, vi и Vim; рассказывается об особенностях исторического развития обозначенных текстовых редакторов; приводятся любопытные приёмы, облегчающие и ускоряющие ежедневное использование Vim (особенно интересна информация о работе с самодельным буфером обмена); предлагается список литературы для самообразования по теме статьи.

Экскурс в историю

Общей характеристикой GNU ed, vi и Vim является умение работать в командном режиме и режиме ввода данных. Одними из первых текстовых редакторов, функционировавших по таком принципу, были Colossal Typewriter (см. [McCarthySilver1960]), Expensive Typewriter (см. [Piner1972]) и QED (см. [AngluinDeutsch1968], [QED1969]). Эти программы обладали значительными возможностями. К примеру, с помощью QED для системы разделения времени SDS 940 (Scientific Data Systems) можно было:

  • создавать, вставлять или удалять числовые или алфавитные символы и строки текста;
  • изменять, копировать или удалять всю строку текста или её часть;
  • получать доступ к любой строке текста, указав символы, которые в ней находятся;
  • хранить часто используемые фразы в одном из специальных буферов символьных строк, из которых эти фразы можно вставить в основной буфер с текстом;
  • разбивать текст на колонки с регулируемым отступом между ними;
  • программировать поведение QED в одном из буферов, а потом запускать последовательности операций над текстом командами LOAD и BUFFER.

ed и GNU ed

Так получилось, что Кену Томпсону (в будущем --- одному из основных разработчиков операционной системы UNIX, оказавшему значительное влияние на развитие компьютерных наук), проходившему обучение в Калифорнийском университете в Беркли, приходилось использовать QED в своей деятельности. Видимо, QED произвёл на Томпсона приятное впечатление и, после поступления на работу в Bell Telephone Laboratories, он написал аналог QED для системы CTSS (Compatible Time-Sharing System) Массачусетского Технологического Института (MIT); позже появились версии QED для Multics (Multiplexed Information and Computing Service) и GE-TSS (этот вариант QED, умевший, в частности, работать с обратными ссылками в регулярных выражениях, был создан Деннисом Ритчи).

Кончилось дело тем, что ed, стандартный текстовый редактор UNIX, разработанный Томпсоном, унаследовал от своих предшественников логику поведения, которая включала использование режима команд и режима ввода данных. Реакция на пользовательские ошибки также осталась без изменений (см. [Piner1972, p. 2]): в ответ на недопустимые команды выводится ? (вопросительный знак), говорящий о том, что программа не выполнила никаких операций и человек должен проверить корректность своих действий.

Изначально ed обладал минимумом возможностей по применению регулярных выражений, а также не имел буферов символьных строк. Такими были первые версии ed для PDP-7 (Programmed Data Processor), которые, со временем, стали усложняться и обрастать функционалом.

Редактор GNU ed, распространяемый сегодня согласно General Public License v. 3, входит в состав практически всех дистрибутивов GNU/Linux. Первые версии GNU ed созданы на основе материала из книги [KernighanPlauger1981] и опубликованы в 1993 году.

vi

Текстовый редактор vi (vi --- название, которое можно интерпертировать либо как часть слова "visual", либо как аббревиатуру от словосочетания "Visual Interface") был разработан в 70-е годы XX века с целью избавиться от неудобств, с которыми связано использование ed. Дело в том, что несмотря на все преимущества ed (см. [LoPresti1999]), его сложно освоить и применять из-за нехватки наглядности процесса редактирования текста. Основой для vi послужили разработки, проводившиеся на базе проекта em (см. [Coulouris1998]).

vi создавался как наглядный текстовый редактор. В данном случае, наглядность заключается в том, что становится возможным отображение фрагмента текста на экране монитора и одновременное его редактирование. Полноценные версии vi стали доступны к началу 80-х годов, войдя в состав второго выпуска подборки программ, распространяемых Калифорнийским университетом в Беркли (Second Berkeley Software Distribution).

Начиная с 2002 года, оригинальный vi (см. [Ritter2007]) распространяется по лицензии в стиле BSD (с обязательной рекламной строкой, в которой упоминается компания Caldera; см. [ПроблемаЛицензииBSD]). Таким образом, сегодня vi является свободной программой, лицензия на которую, однако, несовместима с GNU General Public License.

Vim

Обсуждая историю появления Vim нельзя забыть о STEVIE (Atari Sixteen/Thirty-two editor for VI enthusiasts --- редактор для энтузиастов vi, работающих на ЭВМ Atari с 32-битным микропроцессором Motorola 68000 и 16-битной внешней шиной адресации). STEVIE представляет из себя аналог vi, опубликованный в 1983 году (см. [Thompson1983-1], [Thompson1983-2]) как программа, являющаяся всеобщим достоянием (лицензия Public Domain; см. [КатегорииПрограмм]).

Именно на основе STEVIE был создан сначала редактор ``Vi IMitation'', а потом, после того как функционал Vim стал шире, чем у оригинального vi, название программы стало расшифровываться как ``Vi IMproved'' (улучшенный vi).

Начиная с версии 6.1, Vim является свободной компьютерной программой, лицензия на которую потенциально совместима с GNU General Public License (подробнее см. [VimLicense]).

Обзор литературы

Сведения исторического характера

  • [Bezroukov2011] --- интервью Билла Джоя (Bill Joy), взятое в 1999 году; историческая справка о процессе развития Vim также прилагается.
  • [Bostic1997, P. 2] --- перечислены люди, которые в разное время внесли вклад в развитие vi и ex (ex представляет собой командный интерфейс доступа к средствам редактирования, поддерживаемым vi и Vim).
  • [Coulouris1998] --- историческая справка о том, как был разработан редактор em, а также о том, как код em попал к будущим разработчикам vi (исходные тексты em прилагаются).
  • [Joyce1984] --- интервью, в котором Билл Джой (Bill Joy) вспоминает о том, как проходил процесс разработки vi.
  • [QED1969] --- описаны возможности и особенности QED в системе SDS 940.
  • [Ritchie2004] --- изложена краткая история развития текстовых редакторов, от QED до vi.

Философия редактирования текста

  • [Муленар2000] --- описание логики эффективных приёмов редактирования текста от одного из основных разработчиков Vim
  • [Реймонд2005] --- подробно обсуждаются сильные и слабые стороны различных подходов к реализации программ для редактирования текста (см. Раздел 13.2; С. 336-351).
  • [SuvajdzinHajdukovicZivanov2003] --- любопытная статья, авторы которой стараются доказать, что процесс работы над текстом программ на языках общего назначения можно оптимизировать через использование сред программирования, близких к тем, что применяются при написании исходного кода для выполнения на технологических микроконтроллерах.

Описание программной реализации текстового редактора

  • [Coulouris1998] --- страница с прямой ссылкой на исходные тексты em (см. раздел "Source code for 'em'").
  • [KernighanPlauger1981] --- книга, где очень подробно рассказано о подходах к реализации различных программ на языке Pascal, в том числе, текстового редактора, похожего на ed.
  • [Moolenaar2002] --- обзор файлов с исходным кодом Vim, краткое описание содержания каждого файла прилагается (см. раздел "Vim internals").
  • [Ritchie1996] --- описание внутреннего устройства QED в системе GE-TSS.
  • [Thompson1983-1], [Thompson1983-2] --- исходный код редактора STEVIE.

Информация о текстовых редакторах, аналогичных vi

  • [Guckes2001] --- список с подробным описанием каждого из аналогов.
  • [ViEditorFamily2011] --- список, дополняющий [Guckes2001] (есть ссылки на скриншоты рабочих областей некоторых редакторов).

Руководства пользователя

  • [Кухар2011] --- руководство пользователя ed на русском языке (других более-менее полноценных русскоязычных источников информации о приёмах работы c ed нам найти не удалось).
  • [РежимВыделенияТекста2008] --- русскоязычное описание режимов выделения текста в Vim.
  • [Савоченко2009] --- список некоторых команд, используемых в Vim вместе с описанием выполняемых ими задач.
  • [Уэйлин2005] --- книга рецептов, достойная похвалы за ориентацию на решение задач, приближенных к реальным.
  • [Царьков2009] --- изложен подход к работе с файлами в разных кодировках, а также, быстрому (в частности, с использованием конвейра) редактированию файлов и групп файлов.
  • [Царьков2010] --- предлагается методика, позволяющая работать с файлами, информация о кодировке которых указана в виде переменной окружения Bash.
  • [Царьков2011] --- содержит примеры практического использования Vim для поиска и замены текста.
  • [Яловой2003] --- одна из редких публикаций данного типа, распространяемых согласно GNU GPL. Содержит описание личных впечатлений от перехода к использованию Vim, а также наглядные таблицы команд редактора в разных режимах работы.
  • [GNUedManual2010] --- руководство, содержащее примеры использования GNU ed для решения практических задач (с подробным объяснением). К сожалению, вопросы постороения регулярных выражений для поиска и замены текста освещаются здесь очень кратко.
  • [TextEd] --- подробная, толковая и доходчивая публикация о приёмах использования ed. Помимо всего прочего рассматриваются вопросы совместного использования ed с другими программами из стандартного набора GNU/Linux (см. pp. 19-22).
  • [Bostic1997] --- рассказано о возможностях vi и ex, а также их родственников - nex (new ex - новый ex) и nvi (new vi - новый vi). Особый интерес, с нашей точки зрения, предстваляют разделы, посвящённые ex. В современных руководствах пользователя ему редко уделяют такое внимание (см. раздел 16 - Ex Description и 17 - Ex commands).
  • [JoyHortonRitter2002] --- подробное англоязычное руководство пользователя оригинального vi. Содержит множество любопытных технических деталей, редко обсуждаемых в современных публикациях (к примеру, установку типа терминала для применения vi на нём, или вопросы, возникающие при работе на медленных терминалах).
  • [RobbinsHannahLamb2008] --- очень достойная книга, включающая в себя как практические советы, так и теоретические сведения, помогающие лучше понять современные особенности рассматриваемых текстовых редакторов.
  • [VimDocumentation2010] --- подробнейшая online-документация от разработчиков Vim.

Вспомогательная литература для работы с англоязычной документацией

  • [Борковский1992] --- отличный толковый англо-русский словарь по программированию и информатике, содержащий статьи, которых не найдёшь в современных словарях (электронных в том числе). Замечательно помогает при переводе старой англоязычной документации.
  • [ЗаморинМарков1988] --- хороший толковый словарь основных терминов по вычислительной технике и программированию.
  • [MulticsGlossary] --- подробный глоссарий специфических терминов и аббревиатур, относящихся к операционной системе Multics, а также UNIX-подобным системам (особенно старых версий).

Типичные недостатки русскоязычных материалов о GNU ed, vi и Vim

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

Практическое использование Vim

Редактирование нескольких файлов в vim-tiny

Некоторые GNU/Linux дистрибутивы содержат версию Vim под названием vim-tiny. В ней, например, нельзя управлять текстовыми буферами через команды типа :bn. В ответ на :bn вы получите следующее сообщение: E319: Sorry, the command is not available in this version (Извините, команда недоступна в этой версии).

По этой причине, для редактирования нескольких файлов в одном окне терминала, иногда рекомендуют установить полную версию Vim. Но это вовсе не обязательно.

Как выясняется, в vim-tiny несколько файлов с одного терминала можно легко править, используя механизм вкладок (подробнее см. [Moolenaar2010-1].

Итак, в командном режиме (средствами ex) открываем три файла (по одному в каждой вкладке).

:tabf ИМЯ_ФАЙЛА_1
:tabf ИМЯ_ФАЙЛА_2
:tabf ИМЯ_ФАЙЛА_3

Переходим от одного файла к другому для внесения правки (числа после tabn указывают на номер вкладки в той последовательности, согласно которой в них были открыты файлы).

:tabn 2
:tabn 1
:tabn 3

Внеся желаемые изменения в файлы, закрываем их в произвольном порядке (сначала тот, что был открыт вторым по счёту, потом - тот, что открыли третьим и так далее).

:tabc 2
:tabc 3

В vim-tiny также допустимо с помощью :args ИМЯ_1 ИМЯ_2 задавать имена редактируемых файлов, а потом переходить от одного из них к другому по командам :next и :prev. Подробнее см. [Moolenaar2006-2].

Эффективные методы позиционирования курсора

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

Для перехода к строке под номером N рекомендуется использовать команду :N. Например, в ответ на :205, Vim переведёт курсор к 205-ой строке редактируемого файла.

Определить текущее положение курсора удобно нажатием последовательности клавиш CTRL-G в командном режиме Vim. Таким образом будет получена подробная информация по указанному вопросу, которая выглядит следующим образом: "ИМЯ_РЕДАКТИРУЕМОГО_ФАЙЛА" [СТАТУС_ФАЙЛА] line ТЕКУЩАЯ_СТРОКА of ОБЩЕЕ_КОЛИЧЕСТВО_СТРОК_В_ФАЙЛЕ --ПОЗИЦИЯ_ТЕКУЩЕЙ_СТРОКИ_В_ФАЙЛЕ-- col НОМЕР_КОЛОНКИ_В_СТРОКЕ,_ГДЕ_КУРСОР.

Также иногда требуется перейти к середине строки, разделённой автоматическим переносом. Для того, чтобы множество раз не нажимать на кнопки перемещения курсора вправо/влево, рекомендуем в командном режиме пользоваться перечисленными ниже последовательностями клавиш.

РАЗМЕР_СМЕЩЕНИЯj - перемещение вниз на количество символов, равное размеру смещения.
РАЗМЕР_СМЕЩЕНИЯk - перемещение вверх.
РАЗМЕР_СМЕЩЕНИЯl - перемещение вправо.
РАЗМЕР_СМЕЩЕНИЯh - перемещение влево.

Перемещение блоков текста по горизонтали

Перейдя в командный режим Vim, введите число строк, считая ту, где находится курсор, которые вы хотите выровнять. Потом нажмите комбинацию клавиш Shift и > для перемещения указанного количества строк вправо, или Shift и < (для перемещения влево).

Обозначенные команды особенно полезны при редактировании файлов с иходным кодом компьютерных программ. Отступы строк подчёркивают уровень вложенности блоков программы и, таким образом, облегчают восприятие и анализ языковых конструкций (подробнее см. [Спинеллис2004, с. 251-253]).

Изменение регистра групп букв

Перейдём в режим выделения текста (<Shift> + <v> в командном режиме). А затем, используем комбинацию клавиш <Shift> + <u> для перевода строки в верхний регистр и <u> для перехода к нижнему регистру.

Управление файлом подкачки

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

Содержимое этого файла (согласно [Moolenaar2010-2]) обновляется каждые четыре секунды отсутствия ввода со стороны пользователя, либо после каждых 200 введённых символов.

Имя файла подкачки (.ИМЯ.sw*) текущей сессии редактирования текста определяется встроенной в Vim командой :sw.

Для восстановления набора данных по файлу подкачки удобно запустить Vim с опцией -r или выполнить команду :recover если Vim уже запущен.

Желающим отключить использование файлов подкачки в Vim, а также стремящимся сохранять эти наборы данных в отдельном каталоге, рекомедуется обратиться к оригинальной документации: [Moolenaar2010-2].

Приёмы работы с буфером обмена

В среде X11 существует большое разнообразие механизмов работы с буфером обмена. К примеру, можно выделить интересующий текст с помощью мыши, переместить курсор в нужное место в файле, перевести Vim в режим ввода данных и нажать среднюю кнопку мыши. Выделенный текст будет вставлен после курсора.

Есть ещё программы типа xclip (подробнее см. [gnu-lin-xclip]), которые также позволяют работать с буфером обмена.

Однако, далеко не всегда у пользователя в распоряжении есть трёхкнопочная мышь и возможность доустанавливать дополнительные программы на компьютер.

Копирование и вставка текста внутри одного файла реализуется в Vim достаточно просто. А вот для копирования информации из одного файла в другой, без использования мыши и дополнительного программного обеспечения, требуется творческий подход.

Представим, что нам нужно средствами Vim копировать текст с 53 по 107 строку из файла text-from в файл text-to, разместив его там после строки под номером 70.

Переведём Vim в командный режим работы и выполним следующие строки (после символов // расположены комментарии).

Если же, по тем или иным причинам, отсутствует возможность использования механизма именованных вкладок, можно использовать в качестве буфера обмена специально созданный файл.

Копирование текста через файл-буфер особенно удобно если в рабочую область Vim на локальном компьютере необходимо вставить набор данных, хранящийся на удалённой ЭВМ. Приведём пример решения такой задачи, допустив, что дублируемый текст находится в кодировке KOI8-R.

Также существуют другие методы копирования текста между файлами, один из которых описан в [Moolenaar2006].

Карточка с командами Vim на каждый день

Неподготовленному человеку требуется некоторое время, чтобы освоить базовые команды Vim для работы с текстом. Облегчить этот процесс можно если использовать карточку с подсказками на каждый день. В Интернет опубликовано значительное количество таковых: [VimQRC], [Jung2008], [Rayner2011].

Читатель, при желании, может самостоятельно доработать карточки (например, [VimQRC], распространяемую согласно GNU General Public License), убрав те команды, которые он считает для себя лишними и добавив нужные управляющие последовательности (см. [Goerz2009]).

Также стоит обратить внимание на толковую карточку от Дональда Бинднера --- [Bindner2002], распространяемую согласно GNU Free Documentation License.

Литература для самообразования

  1. [Борковский1992] Борковский А. Б. Англо-русский словарь по программированию и информатике (с толкованиями): Ок. 6000 терминов. М.: Московская Международная Школа Переводчиков, 1992. 335 с.
  2. [Гукс2001] Гукс С. Что такое Vim? Пояснение длиной шесть килобайт. URL: http://www.vim.org/6k/features.ru.txt (дата обращения: 17.07.2011).
  3. [ЗаморинМарков1988] Заморин А. П., Марков А. С. Толковый словарь по вычислительной технике и программированию. Основные термины: около 3000 терминов. М.: Рус. яз., 1988. 221 с.
  4. [КатегорииПрограмм] Категории свободных и несвободных программ. URL: http://www.gnu.org/philosophy/categories.ru.html (дата обращения: 08.08.2011).
  5. [Кухар2011] Кухар А. С. Строковый редактор ed. URL: http://ru.inferno-os.wikia.com/wiki/%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%BE%D0%B2%D1%8B%D0%B9_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80_ed (дата обращения: 03.08.2011).
  6. [Муленар2000] Муленар Б. Семь привычек эффективного редактирования текстов / Пер. с англ. К. Бакарас. URL: http://www.moolenaar.net/habits_ru.html (дата обращения: 01.08.2011).
  7. [ПроблемаЛицензииBSD] Проблема лицензии BSD. URL: http://www.gnu.org/philosophy/bsd.ru.html (дата обращения: 08.08.2011).
  8. [Реймонд2005] Реймонд Э. С. Искусство программирования для UNIX.: Пер. с англ. М.: Издательский дом "Вильямс", 2005. 544 с.
  9. [РежимВыделенияТекста2008] Vim magic - Visual Mode. URL: http://habrahabr.ru/blogs/vim/28190/ (дата обращения: 10.08.2011).
  10. [Савоченко2009] Савоченко Р. VIM - Кратко обо всём. URL: http://freesource.info/wiki/Stat%27i/KratkoOboVsjom/VIM?v=3bw& (дата обращения: 17.07.2011).
  11. [Спинеллис2004] Спинеллис Д. Анализ программного кода на примере проектов Open Source. М.: Издательский дом ``Вильямс'', 2004. 528 с.
  12. [Уэйлин2005] Уэйлин С. Поваренная книга Vim: Перевод с англ. URL: http://citkit.ru/articles/140/ (дата обращения: 31.07.2011).
  13. [Царьков2010] Царьков В. Б. Легковесные программы, распространяемые по свободной лицензии. Часть 1: dwm, dmenu, vim. URL: http://rus-linux.net/nlib.php?name=/MyLDP/consol/light_po_1.html (дата обращения: 30.07.2011).
  14. [Царьков2009] Царьков В. Б. vi. Некоторые интересные возможности. URL: http://rus-linux.net/nlib.php?name=/MyLDP/office/vi-interest.html (дата обращения: 30.07.2011).
  15. [Царьков2011] Царьков В. Б. Хитрости при работе с GNU gettext. URL: http://rus-linux.net/nlib.php?name=/MyLDP/algol/gnu-gettext-tricks.html (дата обращения: 30.07.2011).
  16. [Яловой2003] Яловой И. В. Путь к VIM. URL: http://www.opennet.ru/docs/RUS/go_to_vim/ (дата обращения: 10.08.2011).
  17. [AngluinDeutsch1968] Angluin D. C., Deutsch L. P. Reference Manual Q. E. D. Time-Sharing Editor. URL: http://www.bitsavers.org/pdf/sds/ucbProjectGenie/mcjones/R-15_QED.pdf (дата обращения: 07.08.2011).
  18. [Bezroukov2011] Bezroukov N. History of VI editor and its derivatives. URL: http://www.softpanorama.org/Editors/Vimorama/history.shtml (дата обращения: 17.07.2011).
  19. [Bindner2002] Bindner D. J. Vi Reference Card. URL: http://www.digilife.be/quickreferences/qrc/vi%20reference%20card.pdf (дата обращения: 01.08.2011).
  20. [Bostic1997] Bostic K. Vi/Ex Reference Manual. URL: http://docs.freebsd.org/44doc/usd/13.viref/paper.pdf (дата обращения: 09.08.2011).
  21. [Campbell2011] Campbell C. E. Jr. Vim's Versions and Features. URL: http://mysite.verizon.net/astronaut/vim/vimfeat.html (дата обращения: 07.08.2011).
  22. [Coulouris1998] Coulouris G. Bits of History. URL: http://www.eecs.qmul.ac.uk/~gc/history/index.html (дата обращения: 07.08.2011).
  23. [GNUedManual2010] GNU `ed' Manual. URL: http://www.gnu.org/software/ed/manual/ed_manual.html (дата обращения: 04.08.2011).
  24. [gnu-lin-xclip] GNU/Linux clipboard copy/paste with xclip. URL: http://vim.wikia.com/wiki/GNU/Linux_clipboard_copy/paste_with_xclip (дата обращения: 31.07.2011).
  25. [Goerz2009] Goerz M. Vim Quick Reference Card. URL: http://michaelgoerz.net/refcards/vimqrc.pdf (дата обращения: 01.08.2011).
  26. [Guckes2001] Guckes S. Vi Pages - Vi Clones and HomePages. URL: http://www.guckes.net/vi/clones.php3 (дата обращения: 02.08.2011).
  27. [Joyce1984] Joyce J. Interview with Bill Joy // Unix Review Magazine. August, 1984. URL: http://web.cecs.pdx.edu/~kirkenda/joy84.html (дата обращения: 02.08.2011).
  28. [JoyHortonRitter2002] Joy W., Horton M., Ritter G. An Introduction to Display Editing with Vi. URL: http://ex-vi.sourceforge.net/viin/paper.html (дата обращения: 02.08.2011).
  29. [Jung2008] Jung J. B. 100 Vim commands every programmer should know. URL: http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know (дата обращения: 20.07.2011).
  30. [KernighanPlauger1981] Kernighan B. W., Plauger P. J. Software Tools in Pascal. Addison-Wesley, 1981. 366 p.
  31. [LoPresti1999] LoPresti P. J. Ed, man! !man ed / Пер. с англ. В. Царьков. URL: http://lipetsk.lug.ru/articles/ed.html (дата обращения: 02.08.2011)
  32. [McCarthySilver1960] McCarthy J., Silver S. Colossal Typewriter Program. URL: http://archive.computerhistory.org/resources/text/DEC/pdp-1/DEC.pdp_1.1960.102650331.pdf (дата обращения: 07.08.2011)
  33. [McKusick1999] McKusick M. K. Open Sources: Voices from the Open Source Revolution. Twenty Years of Berkeley Unix. From AT&T-Owned to Freely Redistributable. URL: http://oreilly.com/catalog/opensources/book/kirkmck.html (дата обращения: 07.08.2011).
  34. [Moolenaar2000] Moolenaar B. The continuing story of Vim. URL: http://www.moolenaar.net/vimstory.txt (дата обращения: 17.07.2011).
  35. [Moolenaar2002] Moolenaar B. Vim, an open-source text editor. URL: http://www.free-soft.org/FSM/english/issue01/vim.html (дата обращения: 03.08.2011).
  36. [Moolenaar2010-2] Moolenaar B. Vim documentation: recover. URL: http://vimdoc.sourceforge.net/htmldoc/recover.html (дата обращения: 31.07.2011).
  37. [Moolenaar2010-1] Moolenaar B. Vim documentation: tabpage. URL: http://vimdoc.sourceforge.net/htmldoc/tabpage.html (дата обращения: 17.07.2011).
  38. [Moolenaar2006] Moolenaar B. Vim User Manual. Editing more than one file: Copy text between files. URL: http://vimdoc.sourceforge.net/htmldoc/usr_07.html#07.5 (дата обращения: 01.08.2011).
  39. [Moolenaar2006-2] Moolenaar B. Vim User Manual. Editing more than one file: A list of files. URL: http://vimdoc.sourceforge.net/htmldoc/usr_07.html#07.2 (дата обращения: 01.08.2011).
  40. [MulticsGlossary] Multics Acronyms and Terms. URL: http://www.multicians.org/mgloss.html (дата обращения: 06.08.2011).
  41. [Piner1972] Piner S. D. PDP-22 Expensive Typewriter. URL: http://archive.computerhistory.org/resources/text/DEC/pdp-1/DEC.pdp_1.1972.102650079.pdf (дата обращения: 07.08.2011).
  42. [QED1969] QED Reference Manual for SDS 940 Time-Sharing Computer Systems. SDS, 1969. 21 p. URL: http://www.bitsavers.org/pdf/sds/9xx/940/901112B_940_QED_RefMan_Jan69.pdf (дата обращения: 03.08.2011).
  43. [Rayner2011] Rayner D. Best of Vim Tips. URL: http://www.rayninfo.co.uk/vimtips.html (дата обращения: 01.08.2011).
  44. [Ritchie2004] Ritchie D. An incomplete history of the QED Text Editor. URL: http://cm.bell-labs.com/cm/cs/who/dmr/qed.html (дата обращения: 02.08.2011).
  45. [Ritchie1996] Ritchie D. QED Implementation. URL: http://cm.bell-labs.com/cm/cs/who/dmr/qeddoc.html (дата обращения: 07.08.2011).
  46. [Ritter2007] Ritter G. The Traditional Vi. Source Code for Modern Unix Systems. URL: http://ex-vi.sourceforge.net/ (дата обращения: 02.08.2011).
  47. [RobbinsHannahLamb2008] Robbins A., Hannah E., Lamb L. Learning the vi and Vim Editors. O'Reilly Media, 2008. 496 p.
  48. [SuvajdzinHajdukovicZivanov2003] Suvajdzin Z., Hajdukovic M., Zivanov Z. Character Oriented Editing - Habit or Necessity? // Novi Sad J. Math. 2003. Vol. 33, No. 1. P. 53-65. URL: http://www.emis.de/journals/NSJOM/33_1/rad-05.pdf (дата обращения: 10.08.2011).
  49. [TextEd] Text Editing with ed. URL: http://www.mhprofessional.com/downloads/products/0072263369/0072263369_ed_text_edit.pdf (дата обращения: 05.08.2011).
  50. [Thompson1983-1] Thompson T. A mini-vi for the ST (part 1 of 2). URL: http://groups.google.com/group/comp.sys.atari.st/browse_thread/thread/27ae53a4b0617ecb/8db96f888d778a32?#8db96f888d778a32 (дата обращения: 08.08.2011).
  51. [Thompson1983-2] Thompson T. A mini-vi for the ST (part 2 of 2). URL: http://groups.google.com/group/comp.sys.atari.st/browse_thread/thread/b3d2d97da38d6ca7 (дата обращения: 08.08.2011).
  52. [ViEditorFamily2011] Vi Editor Family. URL: http://texteditors.org/cgi-bin/wiki.pl?ViFamily (дата обращения: 03.08.2011).
  53. [VimDocumentation2010] Vim documentation: help. URL: http://vimdoc.sourceforge.net/htmldoc/help.html (дата обращения: 01.08.2011).
  54. [VimLicense2008] Vim License. URL: http://www.gnu.org/licenses/vim-license.txt (дата обращения: 08.08.2011).
  55. [VimQRC] Vim Quick Reference Card. URL: http://tnerual.eriogerg.free.fr/vim.html (дата обращения: 01.08.2011).