Библиотека сайта 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.
Литература для самообразования
- [Борковский1992] Борковский А. Б. Англо-русский словарь по программированию и информатике (с толкованиями): Ок. 6000 терминов. М.: Московская Международная Школа Переводчиков, 1992. 335 с.
- [Гукс2001] Гукс С. Что такое Vim? Пояснение длиной шесть килобайт. URL: http://www.vim.org/6k/features.ru.txt (дата обращения: 17.07.2011).
- [ЗаморинМарков1988] Заморин А. П., Марков А. С. Толковый словарь по вычислительной технике и программированию. Основные термины: около 3000 терминов. М.: Рус. яз., 1988. 221 с.
- [КатегорииПрограмм] Категории свободных и несвободных программ. URL: http://www.gnu.org/philosophy/categories.ru.html (дата обращения: 08.08.2011).
- [Кухар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).
- [Муленар2000] Муленар Б. Семь привычек эффективного редактирования текстов / Пер. с англ. К. Бакарас. URL: http://www.moolenaar.net/habits_ru.html (дата обращения: 01.08.2011).
- [ПроблемаЛицензииBSD] Проблема лицензии BSD. URL: http://www.gnu.org/philosophy/bsd.ru.html (дата обращения: 08.08.2011).
- [Реймонд2005] Реймонд Э. С. Искусство программирования для UNIX.: Пер. с англ. М.: Издательский дом "Вильямс", 2005. 544 с.
- [РежимВыделенияТекста2008] Vim magic - Visual Mode. URL: http://habrahabr.ru/blogs/vim/28190/ (дата обращения: 10.08.2011).
- [Савоченко2009] Савоченко Р. VIM - Кратко обо всём. URL: http://freesource.info/wiki/Stat%27i/KratkoOboVsjom/VIM?v=3bw& (дата обращения: 17.07.2011).
- [Спинеллис2004] Спинеллис Д. Анализ программного кода на примере проектов Open Source. М.: Издательский дом ``Вильямс'', 2004. 528 с.
- [Уэйлин2005] Уэйлин С. Поваренная книга Vim: Перевод с англ. URL: http://citkit.ru/articles/140/ (дата обращения: 31.07.2011).
- [Царьков2010] Царьков В. Б. Легковесные программы, распространяемые по свободной лицензии. Часть 1: dwm, dmenu, vim. URL: http://rus-linux.net/nlib.php?name=/MyLDP/consol/light_po_1.html (дата обращения: 30.07.2011).
- [Царьков2009] Царьков В. Б. vi. Некоторые интересные возможности. URL: http://rus-linux.net/nlib.php?name=/MyLDP/office/vi-interest.html (дата обращения: 30.07.2011).
- [Царьков2011] Царьков В. Б. Хитрости при работе с GNU gettext. URL: http://rus-linux.net/nlib.php?name=/MyLDP/algol/gnu-gettext-tricks.html (дата обращения: 30.07.2011).
- [Яловой2003] Яловой И. В. Путь к VIM. URL: http://www.opennet.ru/docs/RUS/go_to_vim/ (дата обращения: 10.08.2011).
- [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).
- [Bezroukov2011] Bezroukov N. History of VI editor and its derivatives. URL: http://www.softpanorama.org/Editors/Vimorama/history.shtml (дата обращения: 17.07.2011).
- [Bindner2002] Bindner D. J. Vi Reference Card. URL: http://www.digilife.be/quickreferences/qrc/vi%20reference%20card.pdf (дата обращения: 01.08.2011).
- [Bostic1997] Bostic K. Vi/Ex Reference Manual. URL: http://docs.freebsd.org/44doc/usd/13.viref/paper.pdf (дата обращения: 09.08.2011).
- [Campbell2011] Campbell C. E. Jr. Vim's Versions and Features. URL: http://mysite.verizon.net/astronaut/vim/vimfeat.html (дата обращения: 07.08.2011).
- [Coulouris1998] Coulouris G. Bits of History. URL: http://www.eecs.qmul.ac.uk/~gc/history/index.html (дата обращения: 07.08.2011).
- [GNUedManual2010] GNU `ed' Manual. URL: http://www.gnu.org/software/ed/manual/ed_manual.html (дата обращения: 04.08.2011).
- [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).
- [Goerz2009] Goerz M. Vim Quick Reference Card. URL: http://michaelgoerz.net/refcards/vimqrc.pdf (дата обращения: 01.08.2011).
- [Guckes2001] Guckes S. Vi Pages - Vi Clones and HomePages. URL: http://www.guckes.net/vi/clones.php3 (дата обращения: 02.08.2011).
- [Joyce1984] Joyce J. Interview with Bill Joy // Unix Review Magazine. August, 1984. URL: http://web.cecs.pdx.edu/~kirkenda/joy84.html (дата обращения: 02.08.2011).
- [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).
- [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).
- [KernighanPlauger1981] Kernighan B. W., Plauger P. J. Software Tools in Pascal. Addison-Wesley, 1981. 366 p.
- [LoPresti1999] LoPresti P. J. Ed, man! !man ed / Пер. с англ. В. Царьков. URL: http://lipetsk.lug.ru/articles/ed.html (дата обращения: 02.08.2011)
- [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)
- [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).
- [Moolenaar2000] Moolenaar B. The continuing story of Vim. URL: http://www.moolenaar.net/vimstory.txt (дата обращения: 17.07.2011).
- [Moolenaar2002] Moolenaar B. Vim, an open-source text editor. URL: http://www.free-soft.org/FSM/english/issue01/vim.html (дата обращения: 03.08.2011).
- [Moolenaar2010-2] Moolenaar B. Vim documentation: recover. URL: http://vimdoc.sourceforge.net/htmldoc/recover.html (дата обращения: 31.07.2011).
- [Moolenaar2010-1] Moolenaar B. Vim documentation: tabpage. URL: http://vimdoc.sourceforge.net/htmldoc/tabpage.html (дата обращения: 17.07.2011).
- [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).
- [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).
- [MulticsGlossary] Multics Acronyms and Terms. URL: http://www.multicians.org/mgloss.html (дата обращения: 06.08.2011).
- [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).
- [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).
- [Rayner2011] Rayner D. Best of Vim Tips. URL: http://www.rayninfo.co.uk/vimtips.html (дата обращения: 01.08.2011).
- [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).
- [Ritchie1996] Ritchie D. QED Implementation. URL: http://cm.bell-labs.com/cm/cs/who/dmr/qeddoc.html (дата обращения: 07.08.2011).
- [Ritter2007] Ritter G. The Traditional Vi. Source Code for Modern Unix Systems. URL: http://ex-vi.sourceforge.net/ (дата обращения: 02.08.2011).
- [RobbinsHannahLamb2008] Robbins A., Hannah E., Lamb L. Learning the vi and Vim Editors. O'Reilly Media, 2008. 496 p.
- [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).
- [TextEd] Text Editing with ed. URL: http://www.mhprofessional.com/downloads/products/0072263369/0072263369_ed_text_edit.pdf (дата обращения: 05.08.2011).
- [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).
- [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).
- [ViEditorFamily2011] Vi Editor Family. URL: http://texteditors.org/cgi-bin/wiki.pl?ViFamily (дата обращения: 03.08.2011).
- [VimDocumentation2010] Vim documentation: help. URL: http://vimdoc.sourceforge.net/htmldoc/help.html (дата обращения: 01.08.2011).
- [VimLicense2008] Vim License. URL: http://www.gnu.org/licenses/vim-license.txt (дата обращения: 08.08.2011).
- [VimQRC] Vim Quick Reference Card. URL: http://tnerual.eriogerg.free.fr/vim.html (дата обращения: 01.08.2011).