vi – текстовый редактор для операционных систем семейства Unix. Запускается редактор посредством консоли. vi – имеет два основных режима: командный режим и режим вставки. При запуске редактора vi командный режим является режимом по умолчанию. В этом режиме клавиатура используется для различных операций, например: сохранение, поиск по тексту и т.д.
В режиме вставки клавиатура используется для набора текста. Для перехода в режим вставки используется комбинация клавиш [Shift] + [I]. Обратное переключение в командный режим производиться клавишей [Esc] или комбинация клавиш [Ctrl] + [C].
Часто используемые команды
- /str — Поиск строки str вперед. str может быть регулярным выражением
- ?str — Поиск строки str назад
- n — Повторить поиск в том же направлении
- N — Повторить поиск в обратном направлении
- :[range]s/old/new/[g] — Заменить old на new в указанном диапазоне строк range. new и old могут быть регулярными выражениями, а range задается аналогично диапазону строк в редакторе ed. Например, для диапазона строк с 32 по 64 range будет 32,64, первая строка соответствует 1, последняя задается через символ $. Суффикс g означает заменить все вхождения old в строке, а не только первое.
- :e! — перезагрузить текущий файл
- :33 — перепрыгнуть на 33ю строку текстового файла
- i — перейти в режим редактирования
- a — перейти в режим редактирования после текущего символа
- u — отменить последнее действие
- . — повторить последнее действие
- x — удалить символ под курсором
- dd — удалить всю строку
- :w — сохранить файл на диске
- :wq — выход с сохранением файла
- :q — выход
- :q! — выход без сохранения файла
- :r — вставить в документ другой файл
Чтобы получить подробную помощь по редактору vi, выполните команду man vi в Unix shell (q — выход из справки).
Использование регулярных выражений
- /^$/ — пустая строка, т.е. только конец строки
- /./ — непустая строка, по крайней мере один символ
- /^/ — все строки
- /thing/ — thing где-либо в строке
- /^thing/ — thing в начале строки
- /thing$/ — thing в конце строки
- /^thing$/ — строка, состоящая лишь из thing
- /thing.$/ — thing плюс любой символ в конце строки
- /\/thing\// — /thing/ где-либо в строке
- /[tT]hing/ — thing или Thing где-либо в строке
- /thing[0-9]/ — thing, за которой идет одна цифра
- /thing[^0-9]/ — thing, за которой идет не цифра
- /thing1.*thing2/ — thing1, затем любая строка, затем thing2
- /^thing1.*thing2$/ — thing1 в начале и thing2 в конце
Чтобы манипулировать не только целыми фрагментами, выбираемыми регулярными выражениями, но и их частями, используются помеченные регулярные выражения: если конструкция \(…\) появляется в регулярном выражении, то часть соответствующего ей фрагмента доступна как \1. Допускается использование до девяти помеченных выражений, на которые ссылаются \1, \2 и т.д.
Вот ряд примеров использования помеченных регулярных выражений:
- s/\(…\)\(.*\)/\2\1/ — Поместить 3 первых символа в конец строки
- /\(..*\)\1/ — Найти строки, содержащие повторяющиеся смежные цепочки символов
- s/^\(..*\)\.\(..*\)/\1.\\2/ — Перенести остаток строки после первой точки на следующую строку