
- •Лабораторные работы Лабораторная работа №1. Файловая оболочка Midnight Commander
- •Лабораторная работа №2. Информационные команды оболочки, работа со справочной системой
- •Лабораторная работа №3. Управление каталогами
- •Лабораторная работа №4. Файловые операции
- •Лабораторная работа №5. Права доступа к файлам
- •Лабораторная работа №6. Организация поиска
- •Лабораторная работа №7. Регулярные выражения. Команда egrep
- •Лабораторная работа №8. Перенаправление стандартных потоков, конвейеры
- •Лабораторная работа №9. Фильтры, обработка текстовых данных
- •Лабораторная работа №10. Архивирование и сжатие
- •Лабораторная работа №11. Текстовый редактор Vim
- •Vim [ключи] [файл].
- •Лабораторная работа №12. Сценарии оболочки
- •Лабораторная работа №13. Условные конструкции
- •Лабораторная работа №14. Циклические конструкции
- •Лабораторная работа №15. Одномерные массивы
- •Лабораторная работа №16. Потоковый редактор sed
- •Лабораторная работа №17. Язык обработки шаблонов gawk
- •If (условие) {действия1} [else {действия2}].
Лабораторная работа №11. Текстовый редактор Vim
Цель работы: освоить принципы работы текстового редактора Vim.
Необходимые сведения
Vim (Vi IMproved) — улучшенная версия классического текcтового редактора Vi для Unix-систем. Этот редактор обязательно присутствует в любых Unix-системах. Среди особенностей можно выделить полную настраиваемость, возможность использовать макрокоманды (последовательность элементарных команд редактора), малый размер, способность работать на самых маломощных машинах и с использованием некачественных линий связи.
Редактор имеет 3 основных режима работы:
командный — любое нажатие клавиши воспринимается как команда редактору, которая немедленно исполняется;
вставки/замены — добавление и замещение символов в тексте;
режим командной строки — ввод команд, отображаемых на экране.
Запуск Vim осуществляется командой
Vim [ключи] [файл].
При этом открывается для редактирования указанный файл. Если файл не задан, открывается пустой файл, сохранить который можно позже. Некоторые ключи:
+[номер] — курсор будет помещен на строку с указанным номером. Если номер не задан, то на последнюю строку;
-m — запрет записи файла на диск;
-R — файл открывается в режиме «Только для чтения».
По умолчанию Vim запускается в командном режиме. Для перехода в режим командной строки необходимо нажать : (двоеточие), которое отобразится в нижней строке, затем ввести текстовую команду и нажать <Enter>. Некоторые команды:
:help — показать справку. Справочная система представляет собой набор гипертекстовых документов. Для перемещения по гиперссылке установите текстовый курсор на ссылку и нажмите Ctrl+] (закрывающая квадратная скобка). Перемещаться по посещенным страницам в обратном направлении можно по сочетанию клавиш Ctrl+o. Для выхода из справочной системы и возврата в редактор наберите команду :q;
:q! — выход без сохранения;
:q — выход из Vim; если с момента последнего сохранения были внесены изменения, редактор предупредит об этом и не позволит завершить работу;
:w [файл] — сохранение изменений в указанном файле (по умолчанию в текущем). При удачном сохранении в нижней строке редактора отобразится информация о количестве строк и символов в файле;
:wq — выход из редактора с сохранением.
Вернуться в командный режим можно нажатием на <ESC>. Символом ~ в редакторе обозначаются пустые строки.
Для переключения в режим вставки, необходимо нажать <Insert>, повторное нажатие переводит редактор в режим замены. В нижней строке редактора появится указание режима (--INSERT-- или --REPLACE--) и текущая позиция курсора в виде <строка>,<позиция>.
При работе с текстом в Vim используются понятия абзаца, строки и слова. Абзац — часть теста между двумя пустыми строками. Строка — часть текста, окачивающаяся символом новой строки. Каждая строка может состоять из нескольких экранных строк. Понятие слова с точки зрения Vim может не соответствовать представлениям пользователя, например, строка abcd;efgh считается состояшей из трех слов.
Некоторые клавиши (<Delele>, <Backspase>, <Home>, <End>, стрелки и пр.) могут не действовать привычным образом в режиме замены/вставки. К этому нужно быть готовым и помнить, что все действия по редактированию текста можно выполнить в командном режиме.
Вернуться в командный режим из режима вставки/замены можно нажатием на <ESC>.
Ход работы
Запустите текстовый редактор Vim без параметров. Ознакомьтесь с приведенной информацией начального окна.
Вызовите справочную систему редактора. Ознакомьтесь с разделами справочной системы (они выделены символами || либо цветом, отличным от цвета основного текста). Перейдите последовательно в раздел содержания (Table of ContentsFirst Steps in VimInserting Text). Просмотрите справочную информацию по вставке текста. Вернитесь назад в первоначальное окно справки. Вернитесь в редактор.
Перейдите в режим вставки текста. Наберите следующий текстовый фрагмент:
При установке системы по умолчанию регистрируется как минимум один пользователь — root (суперпользователь). Под этой учетной записью можно выполнить любые, в том числе и деструктивные действия, поэтому во многих дистрибутивах вход с правами root предназначен исключительно для администрирования и возможен только в режиме командной строки. Для обычной работы создается пользователь, имеющий стандартные разрешения.
Перейдите в командный режим. Попытайтесь воспользоваться клавишами-стрелками, <Home>, <End>, <PgUp> и <PgDown>. Если Вы удалили часть символов, вернитесь в режим вставки и восстановите текст до исходного состояния.
Отредактируйте документ таким образом, чтобы каждое предложение представляло собой отдельный абзац.
Вернитесь в командный режим. Сохраните документ с именем text1.
Отредактируйте второе предложение заменив слово root на суперпользователь. Сохраните измененный документ с именем text2. Обратите внимание, что Вы продолжаете редактировать документ text1. Выйдите из редактора.
Запустите Vim с указанием перейти на последнюю строку файла text1.
Необходимые сведения
Кроме клавиши <Insert> для перехода в режим вставки/замены можно следующими клавишами (в командном режиме):
<O> — добавление текста в новой строке перед текущей;
<o> — добавление текста в новой строке после текущей;
<I> — добавление текста в начале текущей строки;
<i> — добавление текста перед курсором;
<a> — добавление текста после курсора;
<A> — добавление текста в конце текущей строки.
Перемещение по строке с помощью курсорных клавиш не очень удобно. Для быстрого перемещения по тексту используют следующие команды:
и — на предыдущую и следующую строку соответственно;
<h> и <l> — на одну позицию влево и вправо соответственно;
<j> и <k> — на следующую и предыдущую строку соответственно;
<^> и <$> — в начало и конец строки соответственно;
<w> и <b> — на слово вправо и влево соответственно;
<[[> и <]]> — в начало и конец текста соответственно;
<H> и <L> — в первую и последнюю строку экрана соответственно.
Команды редактирования текста:
<x> — удаление символа в позиции курсора;
d<команда_перемещения> — стирание от текущего положения курсора до нового;
<u> — отмена последнего действия;
dd — удаление текущей строки;
<J> — слияние текущей строки со следующей.
Команды перемещения и редактирования можно выполнять многократно: для этого перед самой командой набирается числовое значение, например:
2w — передвинуть курсор на два слова влево;
4J — слить четыре последующих строк в одну;
15x — удалить 15 символов после курсора;
2d3w — дважды повторить операцию удаления трех слов, то есть всего будет удалено 6 слов.
Для поиска текста используют команду /слово; / — повторить поиск слова далее по тексту.
Для замены слов в тексте используется команда
:[номер]s/строка1/строка2/[ключи],
где
номер задает диапазон строк, в которых производить замену. Задается в виде n,m (номера первой и последней строки диапазона), либо % (все строки);
строка1 и строка2 — что заменять и чем заменять соответственно;
ключи — модифицируют процесс замены. Ключ g (без дефиса) указывает на глобальную замену всех вхождений строка1 (по умолчанию, заменяется только первое вхождение); ключ с (без дефиса) включает режим запроса подтверждений (варианты ответов: y («да» для текущего), n («нет» для текущего), a («да» для всех последующих вхождений).
Для повторного вызова команды поиска или замены в командном режиме наберите / или :, курсорными клавишами перейдите на нужную команду.
Ход работы
Не используя курсорных клавиш, выполните следующие действия:
перейдите на первую строку текста;
добавьте в конец первой строки фразу Конец первой строки;
используя одну команду удалите три слова перед курсором;
перейдите на последнюю строку текста;
удалите 12 первых символов строки;
перейдите на вторую строку и удалите с помощью одной команды;
С помощью команды <u> восстановите текст до исходного состояния.
Осуществите последовательный поиск всех слов пользователь в тексте.
Произведите глобальную замену слова пользователь на обычный пользователь. Сохраните файл с именем text3.
Необходимые сведения
Команды копирования, вставки и перемещения фрагментов текста являются стандартными в любом редакторе. Скопированный или удаленный текст хранится в специальных областях памяти — буферах данных. Чаще всего используются три типа буферов:
Неименованный буфер (используется по умолчанию). В него помещается последний скопированный или удаленный текстовый фрагмент. В командах обозначается "" (две двойные кавычки).
Буферы стирания, обозначаемые числами "0, "1,…,"9 (двойные кавычки и число). В них автоматически заносятся стираемые элементы. В буфере "0 хранится последний стертый элемент, в буфере "1 - предпоследний и т. д. При очередном удалении содержимое буфера с номером "9 теряется безвозвратно.
Именованные буферы с именами "a-"z, "A-"Z. B них заносятся данные только в том случае, если пользователь явно указал их имя. Если указывается строчная буква, то фрагмент в буфере перезаписывается, если прописная — текст добавляется.
Если в командном режиме набрать символ " (начало команды работы с буферами данных), то в нижней строке редактора отобразится набираемая команда. После выполнения операции занесения фрагмента в буфер в нижней строке отобразится соответствующее сообщение.
Основные команды работы с буферами данных:
y<команда_перемещения> — занести указанный командой перемещения блок текста в неименованный буфер (нажатие курсорных стрелок клавиатуры НЕ ЯВЛЯЕТСЯ движением курсора);
<buffer>y<команда_перемещения> — занести указанный командой перемещения блок текста в именованный буфер <buffer>;
yy — занести текущую строку в неименованный буфер;
<buffer>yy — занести текущую строку в именованный буфер <buffer>;
p — вставить в текущую позицию содержимое неименованного буфера;
<buffer>p — вставить в текущую позицию содержимое именованного буфера <buffer>;
<number>p — вставить в текущую позицию содержимое буфера стирания <number>.
Вместо команды p, которая вставляет фрагмент после курсора можно использовать команду P, которая вставляет перед курсором.
Примеры команд:
y3w — скопировать в неименованный буфер три слова после курсора;
"ay3w — скопировать в буфер a три слова после курсора
"a5yy — занести в неименованный буфер пять строк, начиная с текущей;
"ap — вставить в текущую позицию содержимое буфера a;
"6P — вставить фрагмент из буфера стирания номер шесть перед курсором.
Ход работы
Используя неименованный буфер поменяйте местами первую и третью строку.
Используя команду отмены восстановите исходное состояние текста. Удалите последовательно все строки. Используя буферы стирания, вставьте строки в обратном порядке.
Используя именованный буфер A соберите в нем по четыре первых слова из каждой строки. В конце текста добавьте две пустые строки, после чего вставьте содержимое буфера A.
Сохраните файл с именем text4.