Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007





НазваниеАлексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007
страница9/48
Дата публикации28.05.2015
Размер6.43 Mb.
ТипДокументы
100-bal.ru > Информатика > Документы
1   ...   5   6   7   8   9   10   11   12   ...   48

Глава 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 следует нажать клавишу , а затем набрать команду: q!. Эта команда обеспечит выход из vi без сохранения изменений.

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

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

Режим двоеточия, или, иначе, режим последней строки, в который vi переходит при нажатии клавиши <:> в командном режиме. В этом режиме работают такие команды, как открытие нового файла или установка нумерации строк. Официальное название этого режима – ex mode, т. к. в нем можно использовать команды однострочного редактора ex (развитая версия ed).

Если вам необходимо ввести новый текст, то надо в командном режиме набрать команду i (insert), в результате чего vi перейдет в режим вставки, в котором можно набирать текст. Выйти из режима вставки можно с помощью нажатия клавиши . Добиться отмены нежелательных изменений, ошибочно внесенных в текст, можно, выполнив в командном режиме команду u.

Для сохранения изменений в тексте можно использовать команду zz, которая обеспечит выход из vi с сохранением изменений в редактируемом файле. Вместо команды zz можно воспользоваться командой :х.
Задания
• Откройте в режиме только для чтения файл /etc/passwd так, чтобы курсор был установлен на вашу учетную запись.

• Выйдите из vi без сохранения изменений.

• Создайте новый файл text.txt, открыв его в vi и выйдя с сохранением изменений.

• Снова откройте файл text.txt. Выводит ли vi какие-либо сообщения при его открытии?

• Войдите в режим вставки, выполнив команду i. Введите произвольный текст и покиньте режим вставки (клавиша ).

• Проверьте, работает ли команда отказа от изменений u.

• Пользуясь встроенной системой помощи vim, найдите, какие еще варианты перехода в режим вставки имеются.

• Выйдите с сохранением изменений.

Перемещение курсора по тексту в vi


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

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

Для перемещения курсора по тексту подобно клавишам управления курсором используются четыре команды, на клавиатуре соответствующие им клавиши расположены рядом (<Н>, , и ):
□ h – смещает курсор влево на одну позицию;

□ j – на строку вниз;

□ k – на строку вверх;

□ l -на позицию вправо.
Для смещения курсора сразу на несколько строк или позиций перед любой из указанных команд можно набирать в виде цифры количество строк или позиций для перемещения.

Например, следующая команда переместит курсор на двадцать строк вниз:

20k.

Для прокрутки страниц используются сочетания: + (от англ. forward) – вперед и + (от англ. backward) – назад. По аналогии: + – вниз (down), + – вверх (up).

Другие часто используемые команды перемещения по тексту приведены в табл. 7.1.
Таблица 7.1.
Команды перемещений по тексту в vi


Команда

Действие

w

На слово вправо

b

На слово влево

е

Установить курсор в конец слова

0

Курсор в начало строки без учета отступа, т.е. в самое начало

^

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

$

Курсор в конец строки

)

Курсор на начало следующего предложения

(

Курсор на начало предыдущего предложения

}

Курсор в начало следующего абзаца

{

Курсор в начало предыдущего абзаца

G

На последнюю строку документа

#G

Переместить курсор на # – номер строки (например, 20G)

Н

Установить курсор на первую строку экрана

L

Курсор на последнюю строку экрана

z +

Поместить текущую строку вверх экрана

z-

Поместить текущую строку вниз экрана

z.

Поместить текущую строку в центр экрана


Задания
• Запустите vi так, чтобы он читал данные из потока стандартного ввода, и введите несколько строк так, чтобы в начале строк были символы табуляции или пробелы.

• В веденном тексте проверьте отличия команд позиционирования ^ и 0.

• Перейдите в конец файла с помощью одной команды. Находится ли курсор в начале строки?

• Выполните команду: : r! ps aux. Вы должны увидеть список процессов, сгенерированный командой ps aux. Вы можете редактировать этот текст?

• Перейдите на тридцатую строку текста. Проверьте ее номер с помощью сочетания +.

• Включите режим вывода номеров строк. Для этого выполните команду: :set number.

• Позиционируйте текущую строку в центр экрана. » Проверьте, работают ли команды H и L.

• Отличается ли действие команд z+ и z- от команд H и L?

• Выключите режим нумерации строк командой: ; set nonumber.

• Работают ли привычные клавиши управления курсором и клавиши и ?

Команды vi редактирования текста


Несмотря на то, что при правильных настройках терминала редактор vim (vi improved) позволяет перемещаться по тексту с помощью обычных клавиш управления курсором даже в режиме вставки текста, а клавиши и ведут себя ожидаемым образом, полагаться на привычные приемы редактирования текста нельзя.

Во-первых, оригинальный vi (не vim) не поддерживает многие привычные средства редактирования, а во-вторых, даже современный редактор vim может не распознать тип терминала (например, из-за того, что переменная окружения TERM установлена неверно). Такие эффекты довольно часто наблюдаются при работе в удаленном сеансе с помощью сетевых эмуляторов терминала. В таких случаях обычные клавиши редактирования работать не будут.
Команды для редактирования текста приведены в табл. 7.2.
Таблица 7.2.
Команды редактирования текста


Команда

Действие

i

Переход в режим вставки в позиции курсора

I

Переход в режим вставки в начале строки

а

Добавление после текущего символа

А

Добавление в конец строки

о

Вставка строки после текущей строки с переходом в режим вставки

O

Вставка строки до текущей строки с переходом в режим вставки

r

Замена символа в текущей позиции

R

Переход в режим замещения

X

Удаление символа в позиции курсора

X

Удаление предыдущего символа

s

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

S сc

Обе эти команды заменяют текущую строку с переходом в режим вставки

cw cW

Замена слова до пробела, табуляции (обе команды) или знака препинания (cw)

dw dW

Удаление слова до пробела, табуляции (обе) или знака препинания (dw)

dd

D

Удаление строки полностью (dd) или вправо от курсора (D)

yy Y

Копирование сроки в буфер обмена

yw yW

Копирование слова до пробела, табуляции (обе) или знака препинания (dw)

p

Вставка из буфера после текущей позиции

p

Вставка из буфера до текущей позиции

~

Смена регистра текущего символа

J

Объединение строк

u

Отмена действия (от англ. undo)


Многие команды, перечисленные в таблице, допускают использование перед ними числовых квантификаторов. Они указывают, сколько раз должно быть выполнено требуемое действие.

Например, команда 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.
Команды режима двоеточия


Команда

Действие

:q

Выход из редактора

:q!

Выход из редактора без сохранения изменений

: wq

Выход из редактора с сохранением изменений

: х

Выход с сохранением, если текст был изменен

: w

Сохранение редактируемого файла

: w имя

Задание имени файлу и сохранение или запись с другим именем

: e имя

Открытие файла для редактирования

: e! имя

Открытие файла с отказом от изменений в редактируемом файле

: r имя

Вставка текста из файла в позиции курсора

: r! команда

Выполнение команды оболочки и вставка ее текстового вывода в файл

: y

Копирование строки в буфер (можно указывать диапазон строк)

: d

Удаление строк

: set showmode

Показывать текущий режим работы

: set number

Показывать номера строк


Интересной особенностью служебных команд 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 .
1   ...   5   6   7   8   9   10   11   12   ...   48

Похожие:

Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconМетодическое пособие для врачей Санкт-Петербург 2007
В. Г. Беспалов, д м н., старший научный сотрудник, руководитель группы химиопрофилактики рака фгу "нии онкологии им. Н. Н. Петрова...
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconНовые поступления 2 Сельское хозяйство 2 Общие вопросы сельского хозяйства 2
Агрофизический научно-исследовательский институт (Санкт-Петербург). Материалы координационного совещания Агрофизического института,...
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Рабочая программа учебного курса информатики для 4 класса (далее Рабочая программа) составлена на основе программы курса информатики...
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Рабочая программа учебного курса информатики для 4 класса (далее Рабочая программа) составлена на основе программы курса информатики...
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconСпециальная /коррекционная/ общеобразовательная школа (VII вида)...
Субъект Российской Федерации Санкт-Петербург, в лице Комитета по Образованию Санкт-Петербурга. Место нахождения Учредитель -1: 190000,...
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconЭкскурсионные туры в карелию
Санкт- петербург приозерск – ладожское озеро валаам – сортавала – парк «рускеала» олонец александро-свирский монастырь старая ладога...
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconDhl открывает новое сервисное отделение в Санкт-Петербурге Санкт-Петербург, 20 марта 2008 г
Санкт-Петербург, 20 марта 2008 г. Компания dhl, мировой лидер в области экспресс-доставки и логистики, расширяет свое присутствие...
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconРеферата «г. Санкт-Петербург, как символ новой культуры, великое...
Актуальность темы. Санкт-Петербург один из основных смысловых образов русской культуры. Это город-программа, город-концепция, имеющий...
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconУчебно-методический комплекс по специальности: 080801. 65 Прикладная...
Сетевое администрирование: Учебно-методический комплекс /Автор сост. Г. М. Аванесов спб.: Ивэсэп, 2010
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconТип урока: комбинированный урок с применением икт. Цели
Оборудование: пк, учебники: Тур С. Н., Бокучава Т. П информатика: 2 класс, спб: бхв-петербург, 2008; изображения фигур
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconМосква Санкт-Петербург 2007 Вопросы вокального образования: Методические...
Редактор-составитель – кандидат педагогических наук, профессор рам им. Гнесиных М. С. Агин. М. Спб., 2007
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconРазгрузочно-диетическая терапия (лечебное голодание) и редуцированные...

Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconЧуянова е. В. Уровень свободнорадикального окисления в ферментативной...

Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconПатентам и товарным знакам (19)
Санкт-Петербург, ул. Политехническая, 29, Санкт-Петербургский гту (цпи), С. В. Козыреву
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconРеальное и виртуальноЕ в медиапространстве современности
Санкт-Петербургский Гуманитарный университет профсоюзов, г. Санкт-Петербург, Россия
Алексей Береснев администрирование gnu/Linux с нуля санкт-Петербург «бхв-петербург» 2007 iconЗа 2011 год Санкт-Петербург 2011г
Показатели административных правонарушений по районам Санкт-Петербурга в 2010 году 47


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск