Редактор vi |
Статьи - Прочее |
Редактор vi
Полноэкранный редактор viРедактор vi - универсальный полноэкранный текстовый редактор в среде UNIX. Универсальность означает, что, во-первых, этот редактор есть во всех UNIX-подобных ОС и, во-вторых, этот редактор работает с практически любым видом терминала (ANSI, VT100, VT220, VT320, DEC, и т. д.).(База данных, содержащая описание известных системе терминалов находится в файле /etc/termcap.) Эта универсальность обернулась несколько непривычным (для пользователей DOS) пользовательским интерфейсом: для управления редактором используются лишь ``обычные'' кнопки клавиатуры (алфавитно-цифровые символы и знаки препинания). Имеющиеся на многих типах терминалов функциональные клавиши практически не используются. Если клавиатура терминала имеет стрелочные клавиши, то они используются, но, как будет видно ниже, в ограниченном контексте. 1 Режимы работы редактораВвод текстаВ этом режиме все, что набирается на клавиатуре отображается на экране терминала и запоминается в буфере редактора. Нет возможности осуществлять операции редактирования текста, за исключением стирания последнего набранного символа (с помощью комбинации клавиш < Control-H> ). Командный режимВ этом режиме символы клавиатуры выполняют специальные функции (перемещение курсора, стирание частей текста, и т. д.), то есть функции редактирования. Набираемые команды НЕ ОТОБРАЖАЮТСЯ НА ЭКРАНЕ! Режим командной строкиРежим командной строки позволяет производить более глобальные операции с текстом: записывать отредактированный текст в файл, считывать новый файл, выходить из vi, производить настройку редактора, поиск по шаблону, а также осуществлять некоторые функции редактирования. Команды отображаются в нижней части экрана (в ``командной'' строке редактора). 2 Ввод текста< Return> - создает пустую строку и переводит курсор в ее начало. < Control-H> - уничтожает последний введенный символ (это действие не отображается на экране до выхода в командный режим). < Control-[> или клавиша < Esc> - переводят редактор в командный режим. В режиме ввода текста стрелочная клавиатура НЕ РАБОТАЕТ! 3 Командыi - переход в режим набора методом вставки перед текущим символом a - переход в режим набора методом вставки за текущим символом R - переход в режим набора текста методом набивки. Перемещение курсора< Drawing or tabular insertion skipped...> h,j,k,l - на один символ (одну строку), как показано стрелками ^ или 0 - в начало текущей строки $ - в конец текущей строки w - на слово вправо b - на слово влево } - на параграф вперед (параграф - это блок текста, отделенный пустой строкой) { - на параграф назад [[ - в начало текста ]] - в конец текста Кнопки стрелочной клавиатуры также позволяют перемещаться по тексту. Редактированиеdd - стирание текущей строки dдвижение курсора - стирание от текущего положения курсора до нового, задаваемого символом перемещения курсора(Нажатие кнопок стрелочной клавиатуры НЕ ЯВЛЯЕТСЯ движением курсора и не может использоваться в комбинированных командах.) J - слияние текущей строки со следующей u - отмена последней команды . - повтор последней команды : - переход в режим командной строки 4 Командная строка:q или :q! - выход из редактора без сохранения изменений :x - выход из редактора с записью, если файл был модифицирован :w или w filename или w! filename - запись файла и возвращение в командный режим :e filename или :e! filename - загрузка файла filename :r filename - добавить содержимое указанного файла к редактируемому сразу за текущей строкой :set nu - включить нумерацию строк :set nonu - отключить нумерацию строк :!command - выполнить команду UNIX не покидая редактора :/word - выполнить поиск слова word в тексте :/ - повторить поиск слова word далее по тексту 5 Блоки, буферы, окна редактирования. ПовторителиПовторителиКомандам и движениям курсора можно давать повторители (числа), например 2w - передвинуть курсор на два слова вперед 10l - передвинуть курсор на десять символов вправо d10l - стереть десять символов справа от курсора 2d10l - стереть двадцать символов справа от курсора 5J - слить пять последующих строк в одну 4. - повторить последнюю введенную команду четыре раза Буферы viРедактор имеет три типа буферов: буфер стирания (0-9), неименованный буфер и именованные буферы (a-z). В буферы стирания автоматически заносятся стираемые элементы. В буфере 0 хранится последний стертый элемент, в буфере 1 - предпоследний и т. д. Занести в буфер: yy - занести текущую строку в неименованный буфер yдвижение курсора - занести указанный движением курсора блок текста в неименованный буфер. "ayy - занести текущую строку в именованный буфер a "Ayy - добавить текущую строку к содержимому именованного буфера a "by10j - занести последующие 10 строк в именованный буфер b Вставить из буфера: p - вставить в текущую позицию содержимое неименованного буфера "ap - вставить в текущую позицию содержимое именованного буфера a "1p - вставить в текущую позицию содержимое буфера стирания 1 Многооконное редактированиеРедактировать сразу несколько файлов можно либо пользуясь командной редактора :e filename, либо указав все необходимые файлы в командной строке при вызове редактора (например: vi file1 file2 file3). В последнем случае вы двигаетесь по списку файлов с помощью команд: :n - переходим к следующему файлу в списке :rew - возвращаемся к редактированию первого файла в списке Именованные буферы сохраняют свое содержимое при переходе к редактированию другого файла. |