Vi - классика мира Unix
Vi - редактор, в различных своих версиях (Vim, elvis и другие), модификациях и клонах (сохраняющих полную совместимость между собой) представленный абсолютно во всех Unix- и Unix-подобных системах. В большинстве случаев он является системным редактором по умолчанию. А в критических обстоятельствах может оказаться просто единственным.
Поэтому иметь представление о Vi необходимо любому пользователю Linux. Хотя назвать его чрезвычайно удобными в использовании я бы не рискнул - от него веет какой-то допетровской Русью. Я понимаю его поклонников - это пользователи Unix старого закала. В те времена былинные, после строчного редактора (помните о таких? в DOS это был edline, в Unix - просто ed), vi выглядел как шедевр. И те, кто впитал привычку к нему с молоком матери - никогда от него не откажутся. Тем более, что как редактор исходных текстов или системных файлов - он более чем функционален. Посмотрим же и мы, что это такое.
Основная сложность в освоении Vi для человека, привыкшего к редакторам с более или менее, но все же человеческим лицом, является наличие трех режимов: командного, ввода и построчного редактирования. После запуска программы (а это делается просто: vi имя_файла, существующего или нового) перед вами возникает черный экран с тильдами по левому краю каждой строки.
Пользователь DOS, помнящий еще о WordPerfect версий 4 и 5 (прекрасный был, кстати сказать, процессор), попытается тут же начать ввод текста - и не получит ничего, кроме звукового cигнала. Поскольку находится в режиме командном, ввода не допускающем. То есть нажатия на клавиши интерпретируются не как коды букв, а как команды программы.
Для перехода в режим ввода нужно нажать клавишу a (app) или i (insert); первая позволяет добавлять текст после курсора, вторая - вставлять перед. Теперь-то можно и печатать буквы, как в любом другом редакторе или процессоре.
Можно также и перемещаться по тексту с помощью стрелок управления курсором. Следует помнить только, что нажатие таких клавиш, как End и Home, не даст привычного для пользователя DOS эффекта. И, более того, автоматически переведет редактор в командный режим. Для всякого рода сложных перемещений (на слово влево и в право, в начало и конец строки, на стоку вверх и вниз, и так далее) используются комбинации клавиш в командном режиме. То же относится и к операциям удаления и замены слов и текстовых блоков: клавиши delete или insert не окажут никакого действия на выделенный фрагмент; нужно перейти в командный режим и выполнить соответствующие действия уже там.
А вот сохранение файла и выход из него требуют еще одного режима - построчного редактирования. Для этого нужно перейти из режима ввода в командный режим (нажатием клавиши Escape) и набрать : (то есть двоеточие), а после (без пробела) букву для соответствующего действа; например, w - для сохранения, q - для выхода (если файл был изменен, последует предложение сохранить изменения командой :w) или q! - для выхода без сохранения изменений.
Следует заметить, что далеко не всегда ясен текущий режим редактора. В той версии, к которой я набираю эти строки (Vim), режим ввода маркируется строчкой --INSERT-- внизу экрана; но в общем случае - это не обязательно. Косвенно текущий режим можно определить нажатием клавиши escape: в случае режима ввода это переведет редактор в командный режим, а в командном - просто вызовет звуковой сигнал.
В наших условиях сложность работы с vi усугубляется русскими буквами: если вы перешли в командный режим непосредственно из кириллической раскладки (да еще и забыли об этом) - никакие его команды работать не будут. Вызывая жалобное попискивание. А поскольку в консоли раскладка клавиатуры не индицируется (по крайней мере, мне неизвестно, как это можно сделать) - можно провести некоторое время в недоумении, пока не сообразишь переключиться на латиницу.
Я, конечно, понимаю, что все особенности vi - реликты той далекой эпохи, когда главным средством доступа к вычислительным мощностям компьютеров были текстовые терминалы. Клавиатуры которых не имели, скажем, стрелок управления курсором. Однако немало с тех пор воды утекло. И найти ныне такую (работающую) клавиатуру - посложнее, чем пользователя, помнящего о ее существовании. Для которого применение vi и оправдано долголетней привычкой и доскональным знанием. Ныне же приходящим в Linux - есть что выбрать из иного.
Причем - выбор есть, даже не выходя за пределы консольного режима. Примером чему -