Скачать 6.43 Mb.
|
Глава 7. Редактор viМногие считают редактор vi анахронизмом. Но на самом деле vi – это удивительно удобный и мощный инструмент редактирования конфигурационных файлов и программ. Администратор GNU/Linux должен иметь достаточный навык работы с vi, т. к. при аварии vi будет, возможно, единственным доступным средством редактирования текста. Запуск vi и режимы его работыПолноэкранный текстовый редактор vi (от англ. visual) был разработан для работы с любыми текстами, но сейчас он чаще всего используется для редактирования исходных текстов программ и конфигурационных файлов. Команды его подобраны таким образом, что он будет работать даже на терминалах, не обладающих клавишами управления курсором. В современных версиях GNU/Linux обычно устанавливается редактор текста vim (vi improved), являющийся дальнейшим развитием vi. Запускают vi следующим образом: □ vi – в таком случае vi будет запущен для ввода нового файла; □ vi - ‒ файл для редактирования будет считан из стандартного потока ввода (stdin); □ vi filename – файл будет открыт для редактирования; □ view filename или vi -R filename – файл будет открыт для просмотра; □ vi +[num] filename – курсор будет поставлен на строку с номером num или на последнюю строку, если num не указан; □ vi +/regexp filename – файл будет открыт для редактирования и курсор будет установлен на строку, где будет найдено вхождение регулярного выражения regexp. Для "срочной эвакуации" из vi следует нажать клавишу Редактор vim обладает развитой системой помощи, которая может быть получена с помощью команды: help, если ее набрать после нажатия клавиши Редактор vi обладает тремя различными режимами работы. □ Командный режим, в котором vi оказывается при его запуске и при нажатии клавиши □ Режим ввода текста, в который vi переходит при вызове любой из команд вставки или добавления текста, например, i. В этом режиме не рекомендуется, а часто и невозможно, перемещение курсора по тексту. Он используется исключительно для ввода нового текста. Для выхода из этого режима используется клавиша □ Режим двоеточия, или, иначе, режим последней строки, в который vi переходит при нажатии клавиши <:> в командном режиме. В этом режиме работают такие команды, как открытие нового файла или установка нумерации строк. Официальное название этого режима – ex mode, т. к. в нем можно использовать команды однострочного редактора ex (развитая версия ed). Если вам необходимо ввести новый текст, то надо в командном режиме набрать команду i (insert), в результате чего vi перейдет в режим вставки, в котором можно набирать текст. Выйти из режима вставки можно с помощью нажатия клавиши Для сохранения изменений в тексте можно использовать команду zz, которая обеспечит выход из vi с сохранением изменений в редактируемом файле. Вместо команды zz можно воспользоваться командой :х. Задания • Откройте в режиме только для чтения файл /etc/passwd так, чтобы курсор был установлен на вашу учетную запись. • Выйдите из vi без сохранения изменений. • Создайте новый файл text.txt, открыв его в vi и выйдя с сохранением изменений. • Снова откройте файл text.txt. Выводит ли vi какие-либо сообщения при его открытии? • Войдите в режим вставки, выполнив команду i. Введите произвольный текст и покиньте режим вставки (клавиша • Проверьте, работает ли команда отказа от изменений u. • Пользуясь встроенной системой помощи vim, найдите, какие еще варианты перехода в режим вставки имеются. • Выйдите с сохранением изменений. Перемещение курсора по тексту в viВ редакторе vi перемещение по тексту можно осуществлять с помощью привычных клавиш управления курсором и клавиш Как же обойтись без клавиш управления курсором? В командном режиме редактора vi для ввода команд используют только обычные клавиши алфавитно-цифровой клавиатуры, а также клавиши Для перемещения курсора по тексту подобно клавишам управления курсором используются четыре команды, на клавиатуре соответствующие им клавиши расположены рядом (<Н>, □ h – смещает курсор влево на одну позицию; □ j – на строку вниз; □ k – на строку вверх; □ l -на позицию вправо. Для смещения курсора сразу на несколько строк или позиций перед любой из указанных команд можно набирать в виде цифры количество строк или позиций для перемещения. Например, следующая команда переместит курсор на двадцать строк вниз: 20k. Для прокрутки страниц используются сочетания: Другие часто используемые команды перемещения по тексту приведены в табл. 7.1. Таблица 7.1. Команды перемещений по тексту в vi
Задания • Запустите vi так, чтобы он читал данные из потока стандартного ввода, и введите несколько строк так, чтобы в начале строк были символы табуляции или пробелы. • В веденном тексте проверьте отличия команд позиционирования ^ и 0. • Перейдите в конец файла с помощью одной команды. Находится ли курсор в начале строки? • Выполните команду: • Перейдите на тридцатую строку текста. Проверьте ее номер с помощью сочетания • Включите режим вывода номеров строк. Для этого выполните команду: • Позиционируйте текущую строку в центр экрана. » Проверьте, работают ли команды H и L. • Отличается ли действие команд z+ и z- от команд H и L? • Выключите режим нумерации строк командой: • Работают ли привычные клавиши управления курсором и клавиши Команды vi редактирования текстаНесмотря на то, что при правильных настройках терминала редактор vim (vi improved) позволяет перемещаться по тексту с помощью обычных клавиш управления курсором даже в режиме вставки текста, а клавиши Во-первых, оригинальный vi (не vim) не поддерживает многие привычные средства редактирования, а во-вторых, даже современный редактор vim может не распознать тип терминала (например, из-за того, что переменная окружения TERM установлена неверно). Такие эффекты довольно часто наблюдаются при работе в удаленном сеансе с помощью сетевых эмуляторов терминала. В таких случаях обычные клавиши редактирования работать не будут. Команды для редактирования текста приведены в табл. 7.2. Таблица 7.2. Команды редактирования текста
Многие команды, перечисленные в таблице, допускают использование перед ними числовых квантификаторов. Они указывают, сколько раз должно быть выполнено требуемое действие. Например, команда 10х удалит десять символов, начиная с текущей позиции. Команда 2Y запомнит в буфере обмена две строки, а команда 10р десять раз произведет их вставку (только в vim). Задания • Запустите vi, наберите команду 11о и введите строку 192 .168 .1.1. Далее нажмите клавишу • Удалите последнюю строку. • С помощью команды cw измените IP-адрес, заданный в последней строке, на 192.168.200.1. • В предпоследней строке измените адрес на 192.168.200.121. Какая команда уместнее в этом случае? • Перейдите в начало файла и удалите с помощью одной команды четыре строки. • Требуется ввести IP-адрес 10.10.10.10. Как это можно сделать, введя в режиме вставки строку 10. только один раз? Команды поиска vi замены строкДля поиска строки по шаблону можно воспользоваться следующими командами: □ /шаблон – для поиска с текущей позиции до конца файла; □ ?шаблон – для поиска с текущей позиции в начало файла. Эти команды произведут позиционирование курсора на начало первой найденной строки, удовлетворяющей шаблону. Для продолжения поиска надо набрать команду n. Поиск с заменой найденных строк в vi осуществляется с помощью команды режима последней строки : s/шаблон/замена/. Для демонстрации команд замены текста здесь использован текст, приведенный в листинге 7.1. Листинг 7.1. Исходный текст В приведенном тексте несколько раз встречается слово ten, а также теп. Предполагается, что курсор находится в первой строке текста. Для замены в текущей строке первого вхождения строки ten на ю следует ввести команду, приведенную в примере 7.1. Пример 7.1. Поиск и замена строк :s/ten/10/ В результате команды, выполненной в примере 7.1, текст будет выглядеть, как в листинге 7.2. Листинг 7.2. Текст после замены слова tea на строку 10 Обратите внимание на то, что первое вхождение строки ten было заменено на 10 в текущей строке, но не в других строках. Причем было заменено именно первое вхождение строки. Если же необходимо в текущей строке заменить все вхождения, а не только первое, то в конец этой команды надо добавить модификатор g (от англ. go) (пример 7.2). Пример 7.2. Поиск всех вхождений шаблона в строке :s/ten/10/g Результат работы команды из примера 7.2 показан в листинге 7.3. Листинг 7.3. Текст после замены всех вхождений ten строкой 10 Бывает необходимо заменить строки без учета их регистра, например, ten и теп на 10. Это позволяет сделать модификатор i (пример 7.3). Пример 7.3. Поиск и замена с игнорированием регистра :s/ten/10/i В листинге 7.4 показан текст после выполнения команды из примера 7.3. Листинг 7,4, Текст после поиска с игнорированием регистра Для замены в нескольких строках в приведенные выше команды требуется добавить указание диапазона поиска. Например, для поиска по всему файлу и замены всех вхождений искомой строки можно ввести команду, приведенную в примере 7.4. Пример 7.4. Поиск всех вхождений строки по всему файлу :%s/ten/10/gi Оператор % указывает диапазон поиска – весь файл. Модификатор i добавлен для игнорирования регистра при поиске. В результате выполнения команды из примера 7.4 текст будет выглядеть так, как это показано в листинге 7.5. Листинг 7.5. Текст после замены строк по всему тексту с игнорированием регистра Диапазон поиска можно указывать: □ номерами начальной и конечной строк, например: :3,5s/ten/10/; □ номером конечной строки для замены с текущей строки: :, 5s/ten/10/; □ смещением от текущей строки: :,+5s/ten/10/; □ символом конца файла: :3,$s/ten/10/. Задания • Перейдите на начало файла, использованного в примерах данного раздела, и найдите все строки, содержащие 10. • Замените во всех строках, начиная с текущей и до конца файла, вхождения строки 10 на строку 127. • Замените только в текущей строке 127 на 721. • Откройте в режиме для чтения файл/etc/passwd и замените все вхождения символов двоеточия строкой %%%. • Работает ли команда отклонения изменений u, если изменения были порождены командой замены строк : s? Команды режима двоеточияРежим двоеточия (ex mode) предназначен для обеспечения совместимости с однострочным редактором ех, являющимся расширенной версией редактора ed. Эти редакторы, несмотря на весьма почтенный возраст, до сих пор поставляются в современных версиях GNU/Linux. Это связано с исключительным удобством пакетной обработки текста этими редакторами и родственным им неинтерактивным редактором sed, о котором будет рассказано далее. Команды режима двоеточия можно разделить на три категории: □ файловые; □ команды для выполнения команд оболочки; □ служебные. Под файловыми командами в vi понимают разнообразные команды, предназначенные для манипулирования файлами. Команды, предназначенные для выполнения команд оболочки, возвращают результаты работы команд оболочки в редактируемый текст. Команда : s для замены текста, описанная в предыдущем разделе, является примером служебной команды режима двоеточия. Все файловые команды в vi выполняются в режиме последней строки. Исключение составляет команда zz, которая позволяет покинуть vi с сохранением редактируемого файла. Таблица 7.3 демонстрирует наиболее часто встречающиеся команды режима двоеточия в vi. Таблица 7.3. Команды режима двоеточия
Интересной особенностью служебных команд vi, начинающихся с :sec, является то, что для отмены включенного режима надо сделать такую же команду, но с добавкой префикса по. Команда, выполненная в примере 7.5, включит нумерацию строк. Для отключения этого режима следует выполнить команду, приведенную в примере 7.6. Пример 7.5. Включение нумерации строк :set number Пример 7.5. Включение нумерации строк :set nonumber Команда : set nonumber отключит вывод номеров страниц. Задания • Запустите vi и вставьте в новый файл результаты работы команды ps -ef. • Сохраните файл с именем ps.txt. • Внесите в текст любые изменения и вернитесь к исходной версии текста, сохраненной в файле. • С помощью команды :., $у скопируйте в буфер строки, начиная от текущей и до конца файла. • Вставьте их в начало файла, использовав команды 1G и P. • Удалите все строки, содержащие слово root. Для этого используйте команду :/root/d . |
Методическое пособие для врачей Санкт-Петербург 2007 В. Г. Беспалов, д м н., старший научный сотрудник, руководитель группы химиопрофилактики рака фгу "нии онкологии им. Н. Н. Петрова... | Новые поступления 2 Сельское хозяйство 2 Общие вопросы сельского хозяйства 2 Агрофизический научно-исследовательский институт (Санкт-Петербург). Материалы координационного совещания Агрофизического института,... | ||
Программа по формированию навыков безопасного поведения на дорогах... Рабочая программа учебного курса информатики для 4 класса (далее Рабочая программа) составлена на основе программы курса информатики... | Программа по формированию навыков безопасного поведения на дорогах... Рабочая программа учебного курса информатики для 4 класса (далее Рабочая программа) составлена на основе программы курса информатики... | ||
Специальная /коррекционная/ общеобразовательная школа (VII вида)... Субъект Российской Федерации Санкт-Петербург, в лице Комитета по Образованию Санкт-Петербурга. Место нахождения Учредитель -1: 190000,... | Экскурсионные туры в карелию Санкт- петербург приозерск – ладожское озеро валаам – сортавала – парк «рускеала» олонец александро-свирский монастырь старая ладога... | ||
Dhl открывает новое сервисное отделение в Санкт-Петербурге Санкт-Петербург, 20 марта 2008 г Санкт-Петербург, 20 марта 2008 г. Компания dhl, мировой лидер в области экспресс-доставки и логистики, расширяет свое присутствие... | Реферата «г. Санкт-Петербург, как символ новой культуры, великое... Актуальность темы. Санкт-Петербург один из основных смысловых образов русской культуры. Это город-программа, город-концепция, имеющий... | ||
Учебно-методический комплекс по специальности: 080801. 65 Прикладная... Сетевое администрирование: Учебно-методический комплекс /Автор сост. Г. М. Аванесов спб.: Ивэсэп, 2010 | Тип урока: комбинированный урок с применением икт. Цели Оборудование: пк, учебники: Тур С. Н., Бокучава Т. П информатика: 2 класс, спб: бхв-петербург, 2008; изображения фигур | ||
Москва Санкт-Петербург 2007 Вопросы вокального образования: Методические... Редактор-составитель – кандидат педагогических наук, профессор рам им. Гнесиных М. С. Агин. М. Спб., 2007 | Разгрузочно-диетическая терапия (лечебное голодание) и редуцированные... | ||
Чуянова е. В. Уровень свободнорадикального окисления в ферментативной... | Патентам и товарным знакам (19) Санкт-Петербург, ул. Политехническая, 29, Санкт-Петербургский гту (цпи), С. В. Козыреву | ||
Реальное и виртуальноЕ в медиапространстве современности Санкт-Петербургский Гуманитарный университет профсоюзов, г. Санкт-Петербург, Россия | За 2011 год Санкт-Петербург 2011г Показатели административных правонарушений по районам Санкт-Петербурга в 2010 году 47 |