![]() |
![]() |
|
Жемчужина 2. Инструменты разработки: эзотерический Vi

Как запустить Vi
Вы не поверите, но надо в строке приглашения набрать vi и нажать Enter. Vi запустится, и будет это выглядеть примерно так:

Запуск Vi
>vi my.txt — запускает Vi, загружает в редактор и выводит на экран содержимое файла my.txt. Если файл с именем my.txt отсутствует, то он будет создан, и (пустой) открыт в Vi.
Режимы Vi
Переключение режимов
a, A, i, I, o, O, c, C, s, S, R или клавишу Insert.
Нажатие на клавишу Insert в режиме редактирования также переключает Vi из режима вставки в режим замены и обратно.
Тот факт, что вы находитесь в режиме редактирования можно установить по наличию надписи Insert или Replace в левой нижней части окна Vi (см. рисунок ниже):

Выход из Vi
:q — выйти из Vi
:q! — принудительный выход из Vi даже в том случае, если в редакторе находится несохранённый текст
ZZ — выйти из Vi. Если в редакторе есть несохранённый текст, сохранить его и затем выйти.
Редактирование текста
В режиме редактирования осуществляется НАБОР текста. То есть вы нажимаете клавиши, и соответствующие символы появляются на экране в позиции текстового курсора. Если в нижней части экрана отображено слово Insert происходит вставка символов со сдвигом существующих, а при отображении слова Replace — замена существующих символов теми, которые вы вводите. Посимвольное удаление осуществляется, как и положено, клавишами Backspace и Delete. Клавиши управления курсором (клавиши со стрелками) — управляют курсором, перемещая его в соответствующем направлении.
В командном режиме выполняются такие операции редактирования, как вырезание (копирование) и вставка, удаление слов или строк, а так же операция отмены сделанных изменений. Одной из характерных особенностей Vi, к которой надо привыкнуть, является отсутствие операции выделения. На самом деле, в таких текстовых процессорах как OpenOffice Writer или Microsoft Word, да и в других программах с развитым графическим интерфейсом пользователя, чтобы что-то с чем-то сделать, надо указать программе, над чем вы хотите выполнить операцию. И это указание делается при помощи выделения фрагмента текста или другого объекта. Но при работе на монохромных мониторах (для которой, в частности, и создавался в свое время Vi), где отсутствует инверсия текста, выделить что-то не так-то просто. Текст или есть, или его нет, и третьего не дано. Поэтому в Vi принято вместо выделения указывать редактору объекты для обработки при помощи команд. Вы просто сообщаете Vi: «Я хочу удалить три слова после текстового курсора», а он делает это. Вот минимально необходимый набор команд для этих манипуляций (еще раз напомню — все это делается в командном режиме):
Перемещение
w — перемещение на слово вперед. Слово в данном случае это последовательность символов, завершенная или пробелом (переводом строки), или другим символом-разделителем (например, двоеточие, или точка с запятой).
b — на слово назад
e — в конец слова
) — на следующее предложение
} — на следующий абзац
( — на предыдущее предложение
{ — на предыдущий абзац
W — вперед на слово, отделенное пробелом
B — назад на слово, отделенное пробелом
E — в конец слова, отделенного пробелом
Удаление, копирование, вставка
d — удаление. Обычно используется с дополнительными аргументами (d[аргумент]). В результате d удаляет то, на что перемещает аргумент (см. прошлый раздел). Например, dw — удалит следующее за курсором слово, поскольку w перемещает на слово вперед, а d← удалит один символ слева от курсора, ибо именно на один символ влево сдвигает курсор нажатие стрелки ←. При удалении слов и символов команда d аккуратно обходит символы-разделители, и их не удаляет.
dd — удаление текущей строки.
d↑ — удаление строки выше, а d↓ — удаление строки ниже.
Числовой аргумент перед d позволяет задать, сколько раз надо повторить команду удаления (числовые аргументы можно задавать, кстати, перед большинством команд Vi). Например, 3d↑ удалит три строки выше текущей.
yy — копирование текущей строки в буфер. Значит 4y↑ - копирование в буфер четырех строк выше текущей.
p — вставить после курсора содержимое буфера
> — сдвиг вправо (вставляет символы табуляции)
< — сдвиг влево (удаляет символы табуляции)
u — отменить сделанные изменения. Воспринимает числовой аргумент, и отменяет изменения на несколько шагов назад.
Сохранение файлов
:w — сохранить изменения
:w! — форсированная запись, перезаписать не спрашивая
:w имя — сохранить в файл с таким именем
:w! имя — сохранить в файл с таким именем, перезаписать существующий файл
И это все?
Можете меня спросить — как лично я отношусь к Vi? Я отвечу прямо: отношусь к Vi как к катанию на римской колеснице, с лавровым венком на голове и под восхищенные крики толпы. То есть прикольно, то есть один-два раза подорваться на такое можно. Но ездить на римской колеснице на работу каждый день, по хайвею, за сотню почти что километров... Нет-нет, я лучше на каком-нибудь современном транспорте.
И в то же время — я помню об этом — может так случится, что кроме колесницы транспорта не будет. А значит — надо уметь.
Если вы хотите постичь искусство управления колесницами более глубоко, широко и полно, чем это изложено в данной главе, то вот вам парочка приятных ссылок на онлайн-ресурсы:
http://www.opennet.ru/man.shtml?topic=vi&category=1&russian=0
http://www.emanual.ru/download/2986.html
Если говорить о локальных ресурсах, то в altlinux есть два хороших выбора:
- набрать в командной строке man vim и получить хорошую справку на русском языке (да-да, не так страшен man, как его малюют, в альте почти все маны - русские).
- установить, используя Synaptic, пакет vimtutor, и затем в строке приглашения терминального окна набрать команду vimtutor. Великолепный пошаговый учебник, и снова - на русском языке!
Вы спросите - почему vim, а не vi? vim является расширенной и улучшенной версией vi, и все то, что будет сказано в этих двух источниках про vim работает и в vi тоже.
Наслаждайтесь!
Упражнения Жемчужины 2
Упражнение 1.
Запустите Vi следующей командой (для разнобразия запустим улучшенную версию): vim /usr/share/vim/doc/quickref.txt
На экран будет выведено содержимое файла quickref.txt, открытое в редакторе Vim. Поскольку файл этот не наш, присвоим его, сохранив его в домашнем каталоге с другим именем:
:w ~/test.txt
Теперь мы получили в свое распоряжение великолепный текстовый полигон. Поэкспериментируйте на нем в свое удовольствие. Для начала удаляйте символы, слова, строки, снизу, сверху, справа, слева. Добейтесь того, чтобы в файле осталось строк 5-6. Если в ходе экспериментов вы случайно доудаляетесь до пустого файла, воспользуйтесь командой u и отмените последние удаления.
Скопируйте в буфер две-три строки (2yy).
Вставьте их. Затем отмените операцию.
Удалите ВСЕ.
Переведите Vim в режим набора текста. Наберите следующие бессмертные строки:
Однажды в студеную зимнюю пору
Я из лесу вышел — был сильный мороз.
Гляжу, поднимается медленно в гору
Лошадка, везущая хворосту воз.
Сохраните файл. Покиньте Vim. Снова запустите Vim. Откройте в нем сохраненный файл, убедитесь, что стихи на месте.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вот три скриптовых языка
PHP, Perl и JavaScript.
PHP для программ WEB-направленности на стороне сервера.
Ява - примерно тоже на стороне клиента
А Перл для чего?
Три языка
php - хотя может быть использован, как движок для интерпретации скриптов в консоли, однако более ориентирован на создание интерактивных web-страниц
javascript (не имеет никакого отношения к языку java) - изначально был разработан для создания интерактивности на клиентской стороне, однако в технологиях asp.net широко используется и на серверной части.
perl - изначально разработан для как скриптовый язык для обработки текстов. Ныне используется ДЛЯ ВСЕГО. В первой жемчужине я написал, что самое частое применение Perl это 1. автоматизация установки 2. административные скрипты 3. автоматизация тестирования
vi - эхе-хе...
Даже после почти 5 лет с Линуксом и 2-х лет с ОС Икс рука тянется к mc и его редактору. Виндовское и Досовское детство сказывается.
PS Попробовал набрать vi в OS X - работает!
mcedit будет
в следующей жемчужине. Эту тоже надо поправить, black тут сделал мне внушение, показал кое-какие недостатки, надо будет исправить