Занятие 3 Введение в редактор vi

advertisement
Занятие 3
Введение в редактор vi
Что представляет собой редактор vi?
•
•
•
•
•
–
–
–
–
–
–
William Joy, Калифорнийский университет
vi - это экранный текстовый редактор
поставляется в большинстве версий системы UNIX
управляется командами
включает следующие классы команд:
общеорганизующие
управления курсором
вставки текста
удаления текста
вставки ранее удаленного текста
изменения текста
vi: Начало сеанса работы
Синтаксис:
vi [имя_файла]
Примеры
Начало сеанса редактирования файла
$ vi file1
file1
file1
file1
vi file1
Диск
Keyboard
Все изменения при редактировании выполняются над
копией файла, размещенной в оперативной памяти
vi: Режимы работы редактора
•Командный режим - нажатия клавиш интерпретируются как команды
–исходным является режим, когда начинается сеанс vi редактирования
–нажатие клавиши <Esc> переводит вас в командный режим
–vi команды не отражаются на экране
–ex команды префиксируются двоеточием(:) и отображаются на экране
•Режим ввода - информация, соответствующая нажатым клавишам
вводится в файл
ESC
:
/
?
Режим
последней
строки
Командный
режим
Return
i I
a A
o O
Режим
ввода
vi: Сеанс редактирования
содержимое файла
строки в конце
файла
Это пример содержимого
файла test, который будет
рассматриваться далее
~
~
~
Пометки строк,
~
которые не существуют
~
в файле
~
: ex команды
сообщения
о режиме
работы
курсор
vi:Завершение сеанса редактирования
<Esc> ZZ <Return>
диске
отображается)
<Esc>:wq! <Return>
на диске и
редактора
<Esc>:q! <Return>
Сохранение файла на
(на экране не
Сохранение файла
выход из
Выход без сохранения
Команды управления курсором (1)
h или <BackSpace>
Перемещение курсора на одну позицию
влево
j
k
l или <Space>
Перемещение вниз на одну строку
Перемещение вверх на одну строку
Перемещение курсора на одну позицию
вправо
Перемещение вперед на слово (word) за
#w
словом
#b
Перемещение назад на слово (backword) за
словом
#e
Перемещение к концу (end) следующего
слова
$
^ или 0
Перемещение в конец текущей строки
Перемещение в начало текущей строки
Команды управления курсором (2)
G
#G
:#
<Ctrl>+<g>
<Return>
следующей
<Ctrl>+<b>
<Ctrl>+<f>
<Ctrl>+<u>
<Ctrl>+<d>
L
M
H
<Ctrl>+<l>
Переход (Go) в конец файла
Переход (Go) на строку с номером #
Переход на строку с номером #
Вывод номера текущей строки
Переход к первому непустому символу на
строке
Вывод предыдущего (back) содержимого экрана
Вывод следующего (forward) содержимого экрана
Возврат вверх (up) на половину экрана
Переход вниз (down) на половину экрана
Переход к последней (last) строке экрана
Переход к средней (middle) строке экрана
Переход к первой строке экрана (на первую строку,
первый символ)
Перерисовка экрана
Режим ввода
Для переключения в режим ввода используются следующие
команды:
a
Добавление (append) текста после курсора
i
Добавление (insert) текста перед курсором
O
Открытие (Open) пустой строки над текущей строкой
o
Открытие (open) пустой строки под текущей строкой
A
Добавление (Append) текста в конец строки
I
Вставка (Insert) текста с начала строки
В режиме ввода:
<Return>
Появление новой пустой строки (можно
разрезать
строки)
<BackSpase> Возвращение влево для исправления
введенного
<Esc>
Окончание режима ввода. Возвращение в
командный режим
Удаление текста: команды x,dw,dd,dG
#x
#dw
#dd
dG
d$
d^
Удаление (X out) символа над курсором
Удаление (Delete) текущего слова (Word)
Удаление текущей строки
Удаление всех строк от текущей до последней строки
файла
Удаление конца строки (от текущей позиции)
Удаление начала строки (до текущей позиции)
Можно задать число, показывающее сколько раз должна
быть повторена команда. Например: 3dd - удалить 3 строки
Команды отмены произведенных
изменений
u
U
Отмена (undo) последнего изменения
Отмена (Undo) всех изменений в текущей
строке
Перемещение текста: команды p и P.
dобъект
p
после
P
перед
Удаление объекта и сохранение его в буфере
Вставка (paste) содержимого буфера в текст
курсора
Вставка (Paste) содержимого буфера в текст
курсором
Копирование текста: команды yw, yy
Копирование (yank) текущего слова в буфер
Копирование текущей строки
Копирование строк от текущей до конца файла
Копирование части строки от курсора до конца
строки
y^
Копирование части строки от курсора до
начала
строки
Список команд копирования и вставки
yобъект
Копирование (yank) объекта в буфер
p
Вставка (paste) содержимого буфера в текст
после
курсора
P
Вставка (Paste) содержимого буфера в текст
перед
курсором
#yw
#yy
yG
y$
Изменение текста: команды r, R, cw, .
rсимвол
Заменяет (replace) символ, помеченный
курсором на
символ
R
Заменяет (Replace) все символы строки, пока не
нажата клавиша <Esc>
#сw
Изменение текущего слова
#cc
Изменение всей текущей строки
cG
Изменение всех строк файла от текущей до
последней
c$
Изменение части строки от курсора до конца
строки
c^
Изменение части строки от курсора до начала
строки
.
текста,
Повтор последнего действия по изменению
включая удаление
Поиск текста: команды /, n, N
Поиск строки, содержащей заданный текст,
начиная от текущей строки до конца файла с
переходом на начало файла
?текст
Поиск строки, содержащей заданный
текст,
начиная от текущей строки до
начала файла с
переходом на конец
файла
n
Поиск следующего вхождения в файл заданной
строки текста
N
Поиск предыдущего вхождения в файл
заданной
строки текста
/текст
Поиск текста по шаблону
[oO]ld_text Поиск old_text или Old_text.
^текст Поиск строки начинающейся с текста
текст$ Поиск строки заканчивающейся на текст
.
Поиск по любому одиночному символу.
символ* Поиск по символу, который может не
встретиться ни
разу или любое число раз.
.*
Поиск по любому символу, который может не
встретиться ни разу или любое число раз.
Список регулярных выражений
(шаблонов для поиска)
[a-z A-Z 0-9] Определяет класс символов, из которого
формируется образец для сопоставления. Знак "тире" (—)
означает допустимый диапазон символов. Квадратные скобки []
определяют только один символ.
^текст Текст от начала строки.
текст$ Текст от конца строки.
.
Соответствует любому одному символу.
символ* Определяет
символа
ноль
или
любое
число
повторений
Примеры составления шаблонов
/ [Tt]he
Поиск очередной строки со словом "The" или "the"
/ [o0] [nN] [eE]
Поиск строки со словом "one", написанным любым из
указанных типом символов вне зависимости от позиции в слове (т. е.
oNe, One, oNE и т.п. одно и то же)
/bo*t
Поиск строки, содержащей символ ”b", за которым может быть
ноль или любое количество символов "о", за которым, в свою очередь, следует
символ "t". Т.е. подходящими окажутся такие слова: "bt", "bottom", "boot", "booot"
и т. д.
/^ [abc] . *
Поиск очередной строки, начинающейся символом "а", " b"
или "с". Т. е. это надо понимать так, что подойдет любая строка, начинающаяся
с символа "а", "Ь" или "с", вне зависимости от того есть или нет за любым из них
какой-либо символ (символы)
/finally.$
Поиск очередной строки, оканчивающейся на слово "finally", за
которым следует любой символ. Т. е. подойдет любая из строк, оканчивающаяся
следующим образом: «finally.», «finnallyA», «finallyZ»
Глобальный поиск и замена - команды ex
:m,ns/шаблон/новый_текст/[g]
Примеры
:1, $s/one/two/
В каждой строке, с первой по последнюю ($), заменить только первое
вхождение слова “one” на слово “two”
:.,10s/[oO] [nN] [eE]/two/g
Во всех строках, начиная с текущей по 10-ю, заменить каждое вхождение
“one”, причем не важно строчными и.или прописными символами оно
представлено, на слово “two”
Глобальный поиск и замена - команды ex
:m,ns/шаблон/новый_текст /[g]
m ,n
Определяют строки файла, которые обрабатываются
командой
s
Означает выполнение команды замены (substitute)
шаблон
Указывает образец текста для выполнения поиска
новый_текст
текст,
g
строке
Указывает текст, на который заменяется
найденный по образцу
Задает выполнение команды глобально (globally) в
Команды ex
:w
запись текущего содержимого буфера на диск
:m,nw файл
в файл
запись строк с m-ой по n-ую из текущего буфера
:w файл
запись текущего буфера в файл
:e файл
старое
загрузка файла в буфер редактирования, замещающего
содержимое буфера
:e !
файла с
отмена всех изменений в буфере перезагрузкой в него
диска
:r файл
добавление содержимого файла после текущего положения
курсора
:! chm
выполнение команды chm
:set all
вывод всех опций сеанса редактирования
:set nu
включение опции нумерования строк
:set nonu
выключение опции нумерования строк
Команды ex
:set опция
включение опции режима редактирования
:set noопция
выключение опции режима редактирования
:set all
вывод всех опций сеанса редактирования
: map
отображение на экране клавиш, используемых в
командном режиме
:map!
отображение на экране клавиш, используемых в
режиме ввода
Пример
:set showmod
включение вывода сообщения о режиме работы
:set noshowmod
работы
выключение
вывода
сообщения
о
режиме
Download