КПМиИТ. Библиотека. Учебные пособия 

Кое-что о Linux

Е.А. Нурминский


Contents

Первая помощь

При наличии 1000+ команд Linux предоставляет пользователям широчайшие инструментальные возможности по обработке информации и разработке программного обеспечения.

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

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

Если вы почти ничего не знаете

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

        $ apropos copy

исполненной для сбора информации о командах, осуществляющих копирование данных.

Table: Поиск по слову copy.
bcopy (3) - copy byte strings
copysign (3) - copy sign of a number
cp (1) - copy files
cpio (1) - copy files to and from archives
dd (1) - convert a file while copying it
install (1) - copy files and set their attributes
mcopy (1) - copy MSDOS files to/from Unix
memccpy (3) - copy memory area
memcpy (3) - copy memory area
memmove (3) - copy memory area
mread (1) - low level read (copy) an MSDOS file to Unix
mwrite (1) - low level write (copy) a Unix file to MSDOS
objcopy (1) - copy and translate object files
rcp (1) - remote file copy
stpcpy (3) - copy a string returning a pointer to its end
strcpy, strncpy (3) - copy a string
uucp (1) - Unix to Unix copy

Специальная база данных apropos создается системным администратором, и если ее нет, необходимо такую базу создать, используя команду makewhatis.

Если вы кое-что знаете

Например, вы знаете, что команда cp копирует файлы, но не уверены в том, что с ее помощью можно копировать вложенные поддиректории. В этом случае детали работы команды cp (или иной другой) можно выяснить, выполнив команду man, задав ей в качестве аргумента имя команды ( cp):

        $ man cp

Хотя и считается, что по команде man выдается краткая справочная информация, обычно этого вполне достаточно, чтобы полностью прояснить ситуацию. Подробности функционирования man можно выяснить, выполнив команду

        $ man man

Существует и ультракороткий вариант man -- команда whatis, в некотором смысле обратная apropos. Задав для whatis в качестве аргумента имя команды, можно получить однострочное описание этой команды.

Hyжна подробная помощь?

В команде man делается упор на использование тех или иных системных программ Linux, но предполагается, что пользователь в основном знает, что делает команда. В частности, по команде

        $ man gcc

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

Система info поддерживает иерархическую систему подробных справочных документов по основным компонентам Linux и предоставляет возможности контекстного поиска, навигации по тексту с использованием перекрестных ссылок, иерархических меню и предметных указателей. В частности info содержит подробную информацию о себе, так что обучение info можно совместить с получением по этой системе подробной информации.

В некотором смысле info -- это спартанский вариант HTML-документов, без мультимедийных и графических возможностей последнего. Тем не менее для оперативных справок по компонентам компьютерной среды Linux эта система вполне адекватна.

Еще подробней?

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

В последнем варианте Linux, распространяемом фирмой SuSE, находилось свыше 7000 таких документов, общим объемом свыше 130 Мб. Постоянно обновляемый набор этих документов находится также на основных депозитариях Linux, например, ftp://www.linux.org и других зеркалах. Согласно стандарту файловой системы Linux эти документы находятся в поддиректории /usr/share/doc/howto, хотя для разных дистрибутивов размещение этих файлов может быть иным. В соседней директории /usr/share/doc/faq находится коллекция FAQ -- Frequently Asked Questions, тоже источник полезной информации.

Наиболее основательные документы этого типа готовятся в рамках LDP -- Linux Documentation Project. Фактически эти документы представляют собой электронные монографии, среди которых широкую известность имеют "Руководство системного администратора" (LAG) и "Руководство сетевого администратора" (NAG).

Текущие новости

В таком динамическом окружении как Linux важно получать текущую информацию о новых модификациях программ, обнаруженных ошибках и пр. Для этого можно использовать подписку на телеконференции comp.os.linux, comp.os.linux.announce, comp.os.linux app.

Полезную информацию можно обнаружить также в еженедельнике LWN -- Linux Weekly News по адресу http://www.eklektix.comm/lwn. Можно подписаться также на "Новости Linux" -- The Linux Newsletter.

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

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

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

Моды

Основной факт, который следует знать о vi -- это то, что он может находиться в нескольких состояниях, называемых модами.

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

Другой модой vi является режим текстового ввода, в котором символы, вводимые с клавиатуры, отображаются на экране терминала и сохраняются в буфере редактора.

Вход в режим текстового ввода осуществляется командами a, A, i, I, c, C, o, O, которые описаны ниже. Выход из этого состояния происходит при нажатии клавиши Esc.

Третьей модой vi является режим последней строки. В этот режим vi попадает обычно после нажатия клавиши : (двоеточие) или слэша (/ ). При этом курсор переводится на последнюю строку экрана и редактор ожидает ввода дальнейших команд. Вводимая команда отобажается на экране и исполняется после нажатия клавиши ввод.

Некоторые из отложенных (:) команд фактически переводят vi в дополнительные моды терминала операционной системы и строкового редактора ex. Возврат из этих дополнительных мод в основную командную моду происходит автоматически.

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

Команды перемещения по тексту

Для элементарных смещений на один символ или строку на ПК-клавиатурах можно использовать клавиши управления курсором. Для клавиатур без этих клавиш или в тех случаях, когда они дезактивированы, можно использовать


		 h смещение влево 

j смещение вниз
k смещение вверх
l смещение вправо
Смещение вправо можно также получить нажатием клавиши пробела. Команда f символ (forward) переместит курсор вперед на первый символ, а F символ -- назад. Редактор vi позволяет смещаться и на более крупные единицы текста:

		 w, W смещение на слово вперед 

b, B смещение на слово назад
e переход на конец слова
Будучи текстовым редактором, vi понимает, что текст может состоять из предложений, заканчивающихся точкой (.) и абзацев, разделенных пустыми строками. Определенные команды vi позволяют перемещаться и позиционировать курсор относительно этих единиц текста.

		(  начало текущего предложения 

) начало следующего предложения (почти конец текущего...)
{ начало текущего абзаца
} начало следующего абзаца
[ начало текущего раздела
] начало следующего раздела
При подготовке программ или таблиц данных, основным элементом текста является строка. Редактор vi обладает различными средствами позиционирования и перемещения относительно строк текста.

 		0 перемещение на начало текущей строки 

$ перемещение на конец текущей строки
^ перемещение на первый непробельный символ строки
+ первый символ следующей строки
- первый символ предыдущей строки
\(n\)\(\vert\) \(n\)-ый символ текущей строки.
Позиционирование может осуществляться также относительно строк, видимых в настоящий момент на экране терминала vi:

		 z-ввод сместить экран так,		 \(n\)H 		 \(n\)-ая строка сверху 

\(n\)L \(n\)-ая строка снизу
M средняя строка экрана
z-ввод сместить экран так, чтобы текущая строка стала первой
z. сместить экран так, чтобы текущая строка стала средней
z- сместить экран так, чтобы текущая строка стала последней.
Варианты 0H и 0L можно просто набирать как H и L.

Для быстрого просмотра текста vi может смещать текст целыми экранами:


		 Cntl-f один экран вперед 

Cntl-b один экран назад
Cntl-d полэкрана вперед
Cntl-u полэкрана назад
Cntl-f означает одновременное нажатие клавиш Control и f.

Смена моды

Вход в режим текстового ввода осуществляется командами

		a 		 вставка текста после курсора 

A вставка текста в конце строки
i вставка текста перед курсором
I вставка текста перед первым непробельным символом в строке
c замена текста (обычно с аргументом )
C замена текста до конца строки
o создание пустой строки после текущей
O создание пустой строки перед текущей
Команды a, i, c могут сопровождаться аргументом, позиционирующим курсор в определенном месте или (для команды change) указывающим область замены.

Например, a$ предполагает ввод текста в конце строки. Так как это достаточно часто используемая операция, для нее введено сокращение A. Команда a/z введет текст после первого обнаруженного z. Команда c/z позволит заменить текст от текущего положения курсора до первого z. Сам символ z не заменяется.

УПК --удалить, переместить, копировать

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

		 d 		  удаление текста (обычно с аргументом )

dd, D удаление строк
Эти команды можно предварять численным аргументом, например: 13dd удалит 13 строк, начиная с текущей. Команда delete может быть использована и с правым аргуметном:

d аргумент

В этом случае удален будет текст от текущего положения курсора до места, определяемого аргументом. Например, команда

                d$

удалит текст до конца строки. Команда

                dw

удалит текущее слово, то есть то слово, на котором позиционирован курсор. Соответственно

                5dw

удалит 5 слов. Команды d), d}, d] удалят текст до начала следующего предложения, абзаца и раздела соответственно.

Полезным вариантом аргумента является указание символа, до которого следует уничтожить текст. Аргумент в этом случае имеет вид /символ. После набора слэша (/) vi переходит в моду последней строки и ожидает ввода символа.

Части текста могут быть помещены во внутренние буферы vi и скопированы оттуда. Во всяком случае vi автоматически помещает в этот буфер последний удаленный текст. Тем самым его можно при необходимости восстановить.

Просто скопировать текст в буфер можно командой yy или Y. Команда yy может иметь, и как правило имеет, адресную часть:

                5,10yy

запомнит строки 5 - 10 редактируемого файла. Однако

                5yy

запомнит не 5-ую строку файла, а 5 строк, начиная с текущей, на которой расположен курсор.

Запомнить слово можно командой yw, а 10 слов -- командой 10 yw.

Восстановить текст, помещенный в буфер, можно командой p или P. Команда p восстановит текст, разместив его после, а P -- до курсора. К этим командам можно добавить адресную часть, при помощи которой можно предварительно позиционировать курсор.


ex и vi

Внутри vi на самом деле находится строковый редактор ex, который и проделывает основную работу по редактированию файлов. В свою очередь ex является потомком сейчас уже позабытого редактора ed, механизмы которого подробно изложены в классической книге [1]. В чистом виде ex пожалуй уже нигде не используется, разве что в редких случаях, для исполнения определенных сценариев-скриптов редактирования потоков данных.

Тем не менее ex очень эффективно сочетается с интерактивным режимом vi, позволяя автоматически проделывать в vi многократные однотипные операции над группами строк.

Команды ex можно исполнить в vi двумя способами:


		 -- выполнив команду Q и переведя vi в режим ex. 

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

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

Где эта строчка, где этот символ?

Команда ex может иметь адресную часть, если это имеет смысл. Если адресная часть отсутствует, то имеется в виду, что команда применяется к текущей строке файла.

Адрес может быть числом \(n\), в этом случае он указывает на \(n\)-ую строку, и строкой-образцом вида /abc/. Тогда он указывает на первую (после текущей) строку файла, содержащую комбинацию символов abc. В качестве образца могут быть использованы регулярные выражения [1]. Помимо обычных символов регулярное выражение может содержать специальные метасимволы, которые дают возможность описывать различные подмножества строк.

Канонический список метасимволов содержит следующие элементы:

^ $ [ ] - + * .(точка) \

Метасимволы имеют следующую сематику:

^ -- соответствует началу строки. Это позволяет выделять строки не только по наличию в них тех или иных символов, но и по их расположению в строке. Так, например, ^A соответствует строкам (записям), начинающимся на A.
$ -- соответствует концу строки. Например, A$ отвечает строкам, заканчивающимся на A.
[ ] -- c помощью этих символов описывают множества единичных символов. В простейшем случае эти множества описываются перечислением: [AWK] соответствует множеству из трех букв A, W, K. Соответственно, выражение G[AWK] представляет множество строк { GA, GW, GK }.
- -- используется для задания диапазона символов, например, [a-z] соответствует символам от a до z, как они расположены в таблице кодов ASCII.
+ -- этот символ обозначает многократное ( не менее одного ) повторение в образце символа, предшествующего +. Например, [1-9]+ описывает числа, не содержащие нуля в своем десятичном представлении.
* -- также многократное, но возможно также и нулевое повторение предыдущего символа. Типичный пример: [1-9][0-9]* -- положительные целые числа.
.(точка) -- обозначает произвольный единичный символ. Легендарную известность приобрела комбинация .*, которая обозначает произвольную комбинацию символов.
\ -- отменяет специальное значение последующего символа. Отмена специального значения \ производится при помощи \\.
Адрес может быть и арифметическим выражением, например, /abc/ + 1 указывает на строку после, а /abc/-1 -- на строку, предшествующую строке файла, содержащую комбинацию символов abc. Адрес . (точка) указывает на текущую строку, $ -- на последнюю строку файла. Вместо .+5 и пр. используется адрес +5, аналогично -5 и пр. Для поиска в обратном направлении используется форма ?abc?.

Интересной особенностью ex является возможность метить строки. Это делается с помощью команды k, имеющей форму

                адрес k буква

или

                адрес ma буква

Буква является меткой строки с этим адресом. Метка строки может быть использована в качестве адреса. Если строка имеет метку a, то ее адрес может быть задан как 'a.

В адресной части команды может быть задан и интервал вида

                адрес-1, адрес-2.

или

                адрес-1; адрес-2.

Обе эти формы адресуют группу строк от адреса-1 до адреса-2 включительно. Специфика второй формы заключается в том, что в этом случае строка адрес-1 предварительно становится текущей ( . = адрес-1).

УПК-2 -- снова удалить, переместить, копировать

Команда, удаляющая строки, имеет вид

                адрес delete буфер

Если указан поименованный буфер ([a-z]), то удаленные строки помещаются в этот буфер. Если буфер специально не указан, удаленные строки помещаются в буфер общего пользования и сохраняются там вплоть до следующей операции, которая может изменить этот буфер. Это дает возможность при необходимости и возможности восстановить удаленный текст командой u(undo).

Перемещение текста можно осуществить командой

                адрес-откуда move адрес-куда.

Перемещаемый текст, задаваемый адресом-откуда, вставляется после адреса-куда. Например,

                $ m 0

переместит последнюю строку в начало файла.

Скопировать какие-либо строки файла в другое место этого файла можно командой

                 адрес-откуда copy адрес-куда.

или

                 адрес-откуда type адрес-куда

Так же, как и в случае команды move, текст копируется после адрес-куда.

Добавить текст

Самый простой способ добавить какой-либо текст в файл -- это ввести его с клавиатуры. Для этого используются команды, которые переводят ex в текстовую моду и помещают текст, вводимый с клавиатуры в редактируемый файл.

Команда

                 адрес а

поместит вводимый текст после строки, определяемой адресом, а команда

                 адрес i

поместит его до этой строки. Обе эти команды могут употребляться с восклицательным знаком (!). При этом переключается состояние autoindent'a на противоположное. Для первоначальной установки autoindent можно использовать команду set (см. раздел [*]).

Во всех случаях для окончания ввода необходимо ввести строку, содержащую единственный символ . (точка).

Так же как из vi можно перейти в ex, из ex можно перейти в vi, используя команду

                 адрес o /образец/ или

переводящую ex в текстовую моду vi с образованием (пустой) строки по адресу или по месту, определяемому /образцом/.

Часто возникает необходимость включить в редактируемый файл содержание другого. Для этого можно использовать команду

                 адрес read файл

которая добавит содержание файла после строки, определяемой адресом. Например,

                 $ r foo

допишет в конец редактируемого файла содержание файла foo.

В редактируемый файл можно включить и результат исполнения какой-либо команды UNIX:

                 адрес read !команда

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

Для часто встречаемой комбинации: ''удалить, а вместо этого ввести новый текст'' -- используется команда замены

                 адрес change или адрес change!

при этом строки, определяемые адресной частью удаляются, а ex переходит в состояние ввода. Завершить ввод можно как и в случае команд a, i, введя строку, содержащую . (точку).

Замена текста

Для изменения текста, особенно когда это необходимо сделать во многих местах, служить команда substitute.

Обычно она используется в следующей форме:

                 адрес substitute /что заменить /чем заменить/

Например,

                 1, $ s /Вася/Петя/

просмотрит все строки файла (от 1-ой до ($) последней) и в каждой строке первое вхождение слова Вася заменит на Петя.

Для замены всех вхождений команда должна выглядеть так:

                 1, $ s /Вася/Петя/g

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

У команды substitute существуют и другие опции:


		 c 		 запросить подтверждение замены, 

p напечатать последнюю строку, в которой была сделана замена.
Команда substitute может быть использована, например, и в следующем варианте:

                 /Вася/s/Вася/Петя/g3

что означает: начиная от текущей строки найти строку, содержащую слово Вася и в ней и последующих 2-х строках заменить все Вася на Петя.

Очевидный недостаток этой команды -- дважды напечатаное слово Вася. Чтобы этого не делать можно использовать специальный символ &:

                 /Вася/s/&/Петя/g3

Из этого примера понятен смысл & -- он играет роль строки символов, по которой обнаружено совпадение. Этот символ можно использовать и в качестве замены:

                

/Вася/s/&/&, а также и Петя/

что заменит каждое вхождение ''Вася'' на ''Вася, а также и Петя'' в 3 строках файла там, где редактор это обнаружит.

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

Запись и чтение

После завершения работы с текстом необходимо сохранить результаты редактирования.

Основной командой при этом является команда write, которая может быть использована в различных вариантах. Использованная как

                 адрес write файл

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

Форма

                 адрес w » файл

допишет в файл, а

                 адрес w! файл

произведет запись поверх предыдущего содержания файла, даже если это запрещается атрибутами файла.

Следуя метафоре UNIX -- "все является файлом", запись можно произвести не только в файл, но и передать подготовленный текст какой-либо команде:

                 адрес w! команда

Например,

                 w ! fmt > result.text

передаст буфер редактора команде форматирования fmt с последующей записью результата в файл result.text.

Часто употребляется скоропись wq, обозначает запись и выход из редактора. Следует иметь в виду, что запись при этом будет происходить в текущий файл. Если вы не уверены, какой файл является текущим, это можно узнать (и изменить) командой file. Без аргументов она просто сообщает имя текущего файла.

Использованная с аргументом:

                 f foo

она устанавливает имя foo как имя текущего файла.

При редактировании нескольких файлов повторная загрузка vi будет лишней тратой ресурсов и времени. С помощью команды edit можно запросить на редактирование какой-либо файл. Форма

                 e! файл

загрузит файл в буфер редактора, даже если перед этим вы не сохранили содержание буфера.

Возможность редактировать группу файлов можно предусмотреть и при вызове редактора vi или ex.

Команда

                 vi *.tex

поставит в очередь на редактирование все файлы в текущей директории с расширением tex. Перейти от одного к другому внутри ex-моды vi можно командой next. При этом на редактирование будет загружен очередной файл из списка аргументов.

Список аргументов можно освежить в памяти, исполнив команду args, а с помощью next его можно и изменить, например,

                 n *.txt

запросит на редактирование файлы с расширением txt независимо от того, какие аргументы были указаны при вызове vi.


Ускоритель печати

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

                 ab str строка

Когда во время ввода обнаруживается строка символов str, она немедленно заменяется на строку. Например, эта команда (после набора :)

                 ab йй \( \)

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

                 una str

что ликвидирует специальное значение str.

Редактор vi можно в определенном смысле запрограммировать на исполнение последовательности vi-команд при нажатии какой-либо клавиши. Такое программирование осуществляется :-командой

                 map key команды.

Для ввода последовательности команд, содержащей управляющие символы, (например, Esc, для возврата из моды ввода в командную), такие символы предваряются набором Cntr-v. Кавычки " предваряются обратным слэшем (\(\backslash\)). Например,

                 map K /sin Cntr-v Esc cw cos Cntr-Esc Esc

пределяет выполнение при нажатии клавиши K, следующих операций:


		 -- 		 поиск строки sin 

-- замену слова (sin) на cos
-- возврат в командную моду.

Определенной проблемой является небольшое число свободных клавиш в vi: K, V, g, q, *, =. Можно использовать, однако, функциональные клавиши F1 - F*.

Отказаться от введенного макроса можно командой unmap.

Увидеть все введенные сокращения можно командами ab и map (без аргументов).

Конец работы

Для завершения работы с vi в простейшем варианте можно выполнить следующую команду:

ZZ -- записать в текущий файл обновленную версию и выйти из редактора.

У ZZ есть синоним среди отложенных (:) команд -- это команда x -- exit. Покинуть vi можно и через уже описанную в разделе [*] команду quit. Эта команда проверяет, сохранены ли результаты редактирования и если нет, то предупреждает об этом.

Команда quit имеет полезную в некоторых случаях модификацию q!, по которой осуществляется безусловный выход без сохранения результатов редактирования.


Настройки редактора

Настройка vi может производиться различными способами:


		 -- 		 опциями вызова редактора 

-- системными переменными
-- командами редактора.
Каждая из перечисленных опций отменяет предыдущие.

Системная переменная, используемая для инициализации, называется VIMINIT. Непосредственно при вызове vi можно использовать дополнительные или измененые варианты инициализации, которые задаются как опции командной строки. Эти опции должны предшествовать списку редактируемых файлов.

+\(n\)
позиционирует курсор на $n$-ной сроке. Если $n$ отсутствует, позиционирует на последней строке файла.
+ /строка
позиционирует курсор на строке символов. Если строка содержит пробельные символы, она заключена в двойные кавычки.
$ \begin{array}{c}{\tt -v} \\ {\tt -R} \end{array}$
открывает файл только для чтения. Буфер редактирования можно корректировать, но vi заставит вас подумать, прежде чем записать результаты редактирования.
-u файл
Дает возможность автоматически исполнить какие-либо команды, предварительно записанные в файл. Со специальным аргументом NONE эта опция отменяет всякую инициализацию.
-s файл
Содержание файла направляется на вход vi. Это позволяет писать автоматические сценарии редактирования файлов, используя vi. У этой опции есть любопытная парная опция -w файл, когда все что посылается на вход vi, (до)записывается на файл. Опция -W файл записывает каждую сесию редактирования заново.
Редактор vi может быть настроен на конкретное приложение либо заданием определенных опций в командной строке, либо используя команду set.

Список опций вместе с их значениями по умолчанию приведен в таблице 1.


 option 		 value 		 effect 

backspace 0 normal backspace
backup off no backup file
cindent off no C code indentation
digraph off no digraphs
esckeys off no <Esc>-keys in Insert mode
expandtab off tabs not expanded to spaces
formatoptions "vt" Vi compatible formatting
gdefault off no default 'g' flag for ":s"
history 0 no commandline history
insertmode off do not start in Insert mode
joinspaces on insert 2 spaces after period
modeline off no modelines
more off no pauses in listings
revins off no reverse insert
ruler off no ruler
scrolljump 1 no jump scroll
scrolloff 0 no scroll offset
shiftround off indent not rounded to shiftwidth
showcmd off command characters not shown
showmode off current mode not shown
smartcase off no automatic ignore case switch
smartindent off no smart indentation
smarttab off no smart tab size
startofline on goto startofline with some commands
textauto off no automatic textmode detection
textwidth 0 no automatic line wrap
tildeop off tilde is not an operator
ttimeout off no terminal timeout
undolevels 0 no multilevel undo
updatecount 0 no swap file
whichwrap "" left-right movements don't wrap
wildchar CTRL-E only when the current value is <Tab>
use CTRL-E for cmdline completion
writebackup off no backup file written

Bibliography

1
B. Kernighan. Software Tools, Addison.

Нурминский Евгений Алексеевич
2002-03-11