VI(1) VI(1) НАЗВАНИЕ vi - экранный редактор СИНТАКСИС |vi [-t метка] [-r [файл]] [-wn] [-R] [+команда] файл ... |view [-t метка] [-r [файл]] [-wn] [-R] [+команда] файл ... |vedit [-t метка] [-r [файл]] [-wn] [-R] [+команда] файл ... ОПИСАНИЕ vi - экранный редактор из семейства ex(1). Возможно ис- пользование команд редактора ex при работе с vi и нао- борот. При работе в vi все изменения файла отображаются на эк- ране терминала. Позиция курсора определяет местоположе- ние в файле. Опциям команды vi приписан следующий смысл: -t метка Приступить к редактированию файла, сопоставленного с меткой. Редактирование начнется с выполнения ко- манды, заданной при присвоении метки. -r [файл] Восстанавливает файл после аварии системы или ре- дактора. Если файл не указан, выдается список всех сохраненных файлов. -wn Устанавливает по умолчанию окно размером в n строк. Это удобно, когда редактирование происходит по линии с малой скоростью. -R Устанавливает режим "только на чтение", предотвра щающий случайную запись в файл. +команда Начинает редактирование с выполнения указанной ко манды ex. Аргумент файл определяет имя редактируемого файла. Редактор view - это vi с установленным режимом "только на чтение". Редактор vedit - это вариант vi для новичков. В нем ус тановлены флаги showmode и novice, а report=1. Такое окружение создает более комфортную среду. Принципы работы в vi Командный режим Нормальное (обычное) состояние редактора. Начальный ре- жим. По выходе из других режимов Вы попадаете в команд- ный режим. ESC используется для прерывания отдельной команды. Режим ввода Переход в режим ввода осуществляется посредством команд a i A I o O c C s S R. Можно вводить произвольный текст. Нормальный выход из режима производится пос- редством клавиши ESC; аварийно - прерыванием. Последняя строка Команды, начинающиеся на ! : / или ?, при вводе высве- чиваются на последней строке экрана. Команды должны за- канчиваться нажатием клавиши CR. Для отмены команды пользуйтесь клавишей прерывания. Обзор команд Простые команды < v ^ > клавиши для перемещения курсора h j k l клавиши для перемещения курсора iтекст вставить текст cwтекст заменить слово на текст eaтекст поместить текст в конец слова x удалить (стереть) символ dw удалить конец слова dd удалить строку 3dd удалить три строки u отмена (откатка) последнего изменения содержимого буфера ZZ выход из редактора с сохранением изменений :q! выход без записи в файл /текст найти следующее вхождение указанного текста CTRL+U/CTRL+D продвинуться на определенное колиличество строк вверх/вниз :команда выполнить указанную команду ex или ed Некоторым командам может предшествовать число. Числа означают: номер строки/колонки (z G |) или количество пролистываемых строк (CTRL+D CTRL+U) или кратность команды Прерывание и отмена ESC клавиша используется для выхода из режима вставки, а также для прерывания команды клавиша прерывания прерывание (уничтожение или стирание) CTRL+L перерисовка экрана после применения клавиши преры- вания CTRL+R перерисовка экрана в случае, если CTRL+L выполняет роль Операции с файлом :w записать в файл произведенные изменения :q выйти из редактора :q! выйти без сохранения изменений :e имя приступить к редактированию файла имя :e! приступить заново к редактированию файла (все не- сохраненные изменения отменяются) :e + имя приступить к редактированию файла имя; текущая строка - последняя :e +n имя приступить к редактированию файла имя; курсор на строке с номером n :e # приступить к редактированию файла, ассоциированно- го с редактируемым :w имя сохранить в новом файле имя :w! сохранить в файле имя, предварительно опустошив его :sh запуск shell'а из редактора :!команда выполнить команду shell'а :n приступить к редактированию следующего файла, ука- занного в списке при вызове редактора :n список создать новый список файлов для последовательного редактирования CTRL+G выдать имя файла, а также информацию о текущей строке :ta метка приступить к редактированию файла, сопоставленного с меткой. Редактирование начнется с выполнения ко- манды, определяемой при присвоении метки CTRL+] то же, что и :ta; в качестве метки воспринимается следующее слово Можно выполнить любую команду ex или ed типа substitute или global, если набрать ее с префиксом : и ввести пос- редством . Изменение местоположения в файле CTRL+F вывести следующую страницу текста CTRL+B вывести предыдущую страницу CTRL+D пролистать далее (по умолчанию 11 строк) CTRL+U пролистать вверх (по умолчанию 11 строк) nG встать на n-ую строку (по умолчанию в конец файла) /символы найти следующее вхождение цепочки символов ?символы найти предыдущее вхождение цепочки символов n повторить последнюю команду / или ? N вернуться на предыдущую строку, определяемую пос- ледней командой / или ? /символы/+n встать на n-ую строку после содержащей указанные символы ?символы?-n встать на n-ую строку перед содержащей указанные символы ]] следующая секция/функция [[ предыдущая секция/функция ( начало предложения ) конец предложения { начало абзаца } конец абзаца % найти парные скобки ( ) или { } Изменение вида экрана CTRL+L перерисовать экран CTRL+R перерисовка экрана, отныне символ @ будет занимать место удаляемых строк z перерисовать окно так, чтобы строка, содержащая символы, стала последней строкой окна zn. использовать окно в n строк CTRL+E продвинуть текст в окне на одну строку CTRL+Y опустить текст в окне на одну строку Отмеченные позиции `` поместить курсор на предыдущий используемый текст '' поместить курсор на предыдущий используемый текст, на первый непробел в строке mx пометить текущую позицию меткой x `x поместить курсор в помеченную x позицию 'x поместить курсор на первый непробел в строке с по- меченной x позицией Позиционирование на строки H встать на первую строку экрана L встать на последнюю строку экрана M встать на среднюю строку на экране + встать на следующую строку, на первый непробел - встать на предудущую строку, на первый непробел CR то же, что и + v или j встать в ту же колонку на следующей строке ^ или k встать в ту же колонку на предыдущую строку Позиционирование на символы в пределах строки ^ встать на первый непробельный символ 0 встать на первый символ $ встать на последний символ h или > встать на следующий символ l или < встать на предыдущий символ CTRL+H то же, что и < пробел то же, что и < fx найти символ x правее курсора Fx найти символ x левее курсора tx найти предшествующий символу x (правее курсора) Tx найти следующий за символом x (левее курсора) ; повторить последний f, F, t, T поиск , произвести поиск обратный последнему F, f, T, t n| встать на n-ую колонку (по умолчанию в начало) % найти парные скобки () или {} Слова, предложения, абзацы w встать в начало следующего слова (знаки препинания считаются отдельными словами) b встать в начало предудущего слова e встать в конец слова ) встать в начало следующего предложения } встать в начало следующего абзаца ( встать в начало предыдущего предложения { встать в начало предыдущего абзаца W встать в начало следующего слова, окруженного про- белами B встать в начало предыдущего слова, окруженного пробелами E встать в конец следующего слова, окруженного про- пробелами Исправления в режиме ввода (вставки) CTRL+H убрать последний символ CTRL+W убрать последнее слово клавиша забоя то же, что и CTRL+H клавиша уничтожения строки уничтожить введенную строку \ экранирование символов CTRL+H, забоя и уничтоже- ния. ESC выход из режима ввода, переход в командный режим клавиша прерывания прерывание CTRL+D табуляция влево при установленной опции autoindent CTRL+V экранировать непечатный символ Вставка и замена a вставлять за позицией курсора i вставлять перед позицией курсора A вставлять в конец строки I вставлять перед первым непробелом в строке o открыть для ввода строку ниже текущей O открыть для ввода строку выше текущей rx заменить текущий символ на x Rтекст замещать символы вводимым текстом Операторы Операторы, действие которых распространяется на весь текст, пройденный курсором. Так, например, dw уничтожит текст правее курсора до следующего слова (w предписыва- ет встать в начало следующего слова) Двойной оператор dd удалит текущую строку. d уничтожить c изменить y запомнить в буфере < сдвинуть влево > сдвинуть вправо ! пропустить через команду = для ЛИСПа Другие операторы C изменить остаток строки (c$) D уничтожить остаток строки (d$) s заменить символ вводимым текстом (cl) S заменить строки (cc) J склеить строки x удалить символы (dl) X удалить символы перед курсором (dl) Y запомнить строки в буфере (yy) Вставка удаленного или запомненного текста Возможна вставка текста, который был уничтожен или за- помнен последним. Однако, если строки помещены в имено ванный буфер, текст можно извлечь в любое время. p поместить последний текст правее курсора P поместить последний текст левее курсора "xp поместить текст из буфера x "xy запомнить в буфере x "xd уничтожить с запоминанием в буфере x Отмена, восстановление u отменить последнее изменение U восстановить текущую строку . повторить последее изменение "np вставить строку, удаленную n-ой, считая с послед- ней операции удаления ФАЙЛЫ /usr/lib/terminfo/?/* информация о терминалах СМ. ТАКЖЕ bfs(1), ed(1), edit(1), ex(1), sed(1). ПРЕДОСТЕРЕЖЕНИЕ Изменение содержимого файлов /usr/lib/terminfo/?/* мо жет повлиять на работу программ типа vi. В частности, удаление терминала dumb может создать непредвиденные ситуации. СЮРПРИЗЫ Осуществление табуляции посредством CTRL+T возможно только непосредственно после установления опции autoin- dent. Для редактирования текста вводимых команд можно пользо- ваться только клавишей забоя.@