**103.8 Текстовый редактор** **Vi****.** Студент должен уметь редактировать файлы в vi, и ориентироваться в нем. **Изучаем** : - навигацию по документу с использованием vi; - использование основных режимов работы vi; - вставку, редактирование, удаление, копирование и поиск текста. **Термины и утилиты: ** - vi - /, ? - h,j,k,l - i, o, a - c, d, p, y, dd, yy - ZZ, :w!, :q!, :e! Так как все основные настройки в Linux выполняются редактированием файлов, все журналы, устройства, демоны и т.д. тоже по сути являются файлами, то текстовый редактор является одним из важнейших инструментов управления ОС. Существует множество редакторов с различными возможностями, здесь же будет рассмотрен редактор Vi. **Vi** имеет **модальный** интерфейс и одни и те же клавиши в разных режимах выполняют разные действия. По умолчанию работа начинается в **командном режиме**. Для перемещения по документу используются следующие символы: - **h** _или_ **←** _(перемещение на символ влево);_ - **j** _или_ **↓** _(перемещение на символ вниз);_ - **k** _или_ **↑** _(перемещение на символ вверх);_ - **l** _или_ **→** _(перемещение на символ вправо);_ - **b**** ** _(перемещение в начало слова);_ - **e**** ** _(перемещение в конец слова);_ - **( ** _(перемещение в начало предложения);_ - **) ** _(перемещение в конец предложения);_ - **{ ** _(перемещение в начало абзаца);_ - **} ** _(перемещение в конец абзаца);_ - **^ ** _(перемещение в начало строки);_ - **$ ** _(перемещение в конец строки);_ - **1**** G **** ** _(перемещение в начало файла);_ - **G**** ** _(перемещение в конец файла)._ Для перехода в режим вставки можно воспользоваться следующими символами: - **I**** ** _(режим вставки перед текущим символом);_ - **a**** ** _(режим вставки после текущего символа);_ - **o**** ** _(вставить новую строчку);_ - **s ** _(стереть символ и вставить)._ Для возврата в командный режим можно использовать клавишу **Esc** или сочетание **Ctrl**** + ****C** Находясь в режиме редактирования можно использовать буфер обмена: - **y** _ (скопировать)__;_ - **d** _ ( __вырезать__ )__;_ - **c** _ ( __изменить__ )__;_ - **p** _ (вставить)._ Также возможны комбинации с символами перемещения по тексту и обозначениями **d** (строка), **w** (слово) и **l** (символ); например **yw** _ (скопировать слово);_ **dd** _ (вырезать строку);_ **cl** _ (изменить символ);_ **d**** $**_ (удалить с текущего места до конца строки);_ **y**** }**_ (скопировать с текущего места до конца абазца);_ Для поиска информации доступны символы: - **/ ** _ (искать ниже по тексту набор символов, указанных после «/»);_ - **? ** _ (искать выше по тексту набор символов, указанных после «?»);_ - **n**** ** _ (показать следующий результат поиска);_ - **N**** ** _ (показать предыдущий результат поиска)._ Для завершения работы с файлом: - **:e!** _ (отменить все изменения, где «!» - игнорировать все предупреждения);_ - **:**** w ****!** _ (записать изменения);_ - **:q ** _(выйти из файла);_ Как всегда, возможны комбинации, например: **:**** wq ****! newfile.txt ** _(сохранить под именем_ _newfile __.__ txt_ _и выйти);_ Также доступны сокращенные команды: - **ZZ ** _(сохранить и выйти)__;_ - **ZQ**** ** _(не сохранять и выйти);_