| Справочник по редактору VI |
|
|
| Автор Administrator | ||||||
| 14.06.2008 г. | ||||||
Страница 1 из 4 Всем бьющимся головой о монитор посвящается...Вступление О, сколько раз я видел людей, в истерике ломающих клавиатуры, произносящих массу знакомых слов и спрашивающих: "А можно как-нибудь файл в винде отредактировать и засунуть обратно в UNIX? А может, в UNIX есть какой-нибудь человеческий редактор?" "Есть. Это vi " - обычно отвечаю я, но иногда всё-таки вспоминаю, как сам, открыв в первый раз файл в этом редакторе, так и не смог с ним ничего сделать. В ответ на мои потуги терминал то издевательски пищал, то что-то делал, но совсем не то, что я ожидал! И только через какое-то время (наверное, несколько недель) у меня открылись чакры. И после этого я даже в встроенном редакторе Norton Commander пытался для сохранения файла нажать <ESC>:wq и тупо смотрел на появляющееся окошко... Да, переход из DOS в UNIX - это всегда ломка, и часто болезненная. Но ничего, болезни роста прошли, и сейчас я одинаково (неуклюже) умею редактировать тексты как в "винде", так и в UNIX. А постольку, поскольку я ленив, и мне надоело каждый раз объяснять, как работает vi, я решил написать об этом. Для удобства читателей статья разбита на несколько разделов: Общее описание редактора Текстовый редактор vi появился тогда же, когда появился UNIX - в 1970-е. Это и обуславливает его "странноватый" пользовательский интерфейс. Тогда существовала масса разнообразных текстовых (ASCII) терминалов, с разными возможностями и разным количеством и составом функциональных кнопок, а уж графических оболочек тогда и вообще не было. И редактор vi по тем временам был просто шикарным - это полноэкранный текстовый редактор, с мощными встроенными функциями, с поддержкой макросов, с буферами обмена... Сравните с однострочными редакторами, в которых в один момент времени видно только одну строку! А vi - он потому и vi, что "visual". Редактор vi - именно текстовый редактор, в нём можно только редактировать текст, в нём нельзя вставлять никакие таблички, картинки, использовать разные шрифты... но то, что он умеет,он действительно умеет! Что нужно редактору vi для работы? Кнопки на клавиатуре с буквами и цифрами, пробел, <SHIFT>, <ENTER> (куда же без них), кнопка <ESC> (самая важная!), иногда кнопка <CTRL> и... всё! Не нужны функциональные кнопки (они в принципе не работают), стрелки (могут и работать), мышь (забудьте про это животное)... ах да, есть ещё <BACKSPACE>, хотя без него тоже можно обойтись. Но всё-таки, зачем мучаться, учить команды, может, всё-таки есть текстовый редактор под UNIX "попроще?" Да, есть такие, даже бесплатные, но... вы уверены, что они установлены на той системе, на которой вам надо отредактировать пару строк в файле? Или вы хотите таскать их с собой на дискете? А вот редактор vi в UNIX-системе есть. Точно. И освоить его не очень уж сложно (по опыту, через пару дней уже начинают более-менее кнопки правильные нажимать). И как тогда с ним (редактором) работать? Да всё очень просто: когда вы работаете с vi, он находится в одном из двух режимов: 1) режим ввода команд и 2) режим ввода текста. После запуска редактора вы попадаете в режим ввода команд, а чтобы начать вводить текст надо... правильно - ввести соответствующую команду! Понабирали вы буковки и увидели, что набрали что-то не то. Вам надо отредактировать текст (удалить символы, набрать вместо них другие, перейти курсором к другой строке и т.д.). Что вам надо сделать? Ввести команду. А как вернуться в режим ввода команд? А для этого как раз и существует волшебная кнопка <ESC>! Нажали её - и всё, что вы набираете дальше, уже не попадает в основной экран, это уже команды. Как же они выглядят, эти команды? Да это те-же самые буквы на клавиатуре, только теперь они по другому воспринимаются! Например, если вы нажмёте xi, находясь в режиме ввода, то на экране появятся буквы xi. А если вы наберёте xi в режиме команд, то удалится текущий символ (команда x) и вы вернётесь в режим ввода (команда i). Как видно из этого примера, не надо перед каждой командой нажимать <ESC> достаточно нажать её один раз. Кстати, если вы нажмёте <ESC>, и так находясь в командном режиме, ничего страшного не произойдёт. Терминал пискнет (если умеет), а редактор останется в том же командном режиме. Для удобства можно приказать редактору vi показывать режим работы - для этого надо набрать команду :show mode<ENTER> (само-собой разумеется, сначала надо нажать <ESC>), тогда в самой нижней строке экрана будет гореть "INPUT", еслредактор нажодится в режиме ввода текста. Кстати, сколько вариантов UNIX, столько и вариантов vi - в некоторых версиях такая подсказка появляется по умолчанию, а в некоторых - показывают и режим ввода команд (COMMAND). Ещё немного про команды Команды, когда вы их вводите, на экране не отображаются, <ENTER> после них набирать не нужно - вы сразу видите их результат. Но есть и исключение. Это - так называемые "команды строчного редактора". Как их отличить? Да очень просто - они начинаются с "двоеточия" (:). Такие команды отображаются в нижней строке экрана (включая двоеточие), завершать их нужно кнопкой <ENTER>, кнопкой <BACKSPACE> можно удалять (посимвольно). Это команды поиска и замены текста, работы с файлами, выхода из редактора, управляющие команды (set). Перечитайте ещё раз предыдущую часть "Режимы работы vi" и найдите отличия. Дальше мы увидим пример редактирования файла и список команд vi.
Пример редактирования файла Чтобы вам примерно стало понятно, как это всё работает, рассмотрим небольшой пример редактирования файла. Нам надо набрать в vi небольшой текст: Twas brilling, and the slithy toves Отлично, запускаем vi: (дальше всё, что мы набираем на клавиатуре, выделено). $vi alice Появился пустой экран... нет, не совсем пустой - в первом столбце на каждой строке мы видим "тильду" (~). Это признак "строки за концом файла" - а у нас файл пока пустой и все строки такие. Мы находимся в командном режиме, Даём команду ввода текста: i Сохраним дело рук своих: <ESC>:w<ENTER> Поднимаемся на две строки вверх (кк) и переходим к нужному симовлу (четыре раза нажали w, чтобы перейти к четвёртому слову и пять раз - l, чтобы перейти к нужной букве (это буква "e" в середине слова "outgrebe"). Заменяем её на букву "a": ra Вроде всё? Нет, мы забыли указать автора этого замечательного произведения. Мы по прежнему в режиме ввода команд. Нажимаем o (вставили пустую строку, перешли в неё и оказались в режиме ввода текста) и пишем: Lewis Carroll. Отделим имя автора от текста пустой строкой: <ESC>O (мы нажали <ESC>, чтобы вернуться в командный режим и заглавное O, чтобы вставить строку выше курсора). Похоже, текст готов. Нажимаем <ESC>:wq (после команды O мы оказались в режиме ввода, поэтому мы и нажали <ESC>) Следующий раздел - список команд, и это ещё не всё... |
||||||
You need to login or register to post comments.
Обсудить в форуме. (0 комментариев)
| « Пред. | След. » |
|---|


