Эта заметка доступна на: English Castellano Deutsch Francais Nederlands Russian Turkce |
Автор Ben Y. Yoshino Об авторе: Бен Йошинори Йошино работает в Гавайском университете. Его домашняя страница : http://www.eng.hawaii.edu/~ben/. Содержание:
|
Резюме:
Это руководство написано Беном Й. Йошино. Оригинал находится на www.eng.hawaii.edu/Tutor/vi.html. Другие руководства этого автора на: www.eng.hawaii.edu/Tutor/. Мы обнаружили этот материал на http://www.rootprompt.org/ и опубликовали с разрешения автора.
Редактор vi используют многие пользователи Unix. VI очень удобен для программистов, но для начинающих он оказывается довольно трудным. Это руководство написано для новичков, но также содержит разделы для опытных пользователей vi. Здесь представлено множество примеров, которые для лучшего понимания необходимо выполнить, а также подумать над своими собственными. Лучший путь в изучении - практика.
В руководстве будут использованы следующие сокращения :
^X обозначает "control" символ. Например : ^d - удерживая клавишу "control" нажать соответствующий символ. Для этого примера используется клавиша "control" в сочетании с буквой "d".
Пользователи ОС Linux, использующие новые терминальные эмуляторы такие как xterm gnome-terminal, kvt, aterm, могут пропустить этот раздел. Переменная "$TERM" у них всегда по умолчанию имеет правильное значение.
Редактор Vi работает в полноэкранном режиме, поэтому использует информацию о типе терминала. Когда вы соединяетесь с "wiliki" ("wiliki" - имя главного инженерного сервера в Гавайском университете) он требует указания типа вашего терминала. Например :
TERM = (vt100)
Если у вас данный тип терминала (или эмулятор поддерживающий этот тип) просто нажмите клавишу "Enter". Если у вас термнал hp, введите hp и нажмите клавишу "Enter". Если вам не известен тип терминала - спросите совет у лаборанта.
Если вы допустили ошибку указав неверный тип терминала - ничего страшного, просто завершите сеанс работы. Следующие команды помогут исправить установки системы :
Во-первых установите переменную TERM (если вы не знаете какая оболочка используется в системе выполните команду echo $SHELL). В примерах подразумевается тип терминала vt100. Замените его при необходимости используемым вами. Для оболчки C (/bin/csh) используйте следующую команду :
set term=vt100Для оболочек Bourne (/bin/sh) или Korn (/bin/ksh) :
export TERM TERM=vt100Далее перезапустите ваш терминал :
tset
Теперь, после правильной установки типа терминала, начнем изучение редактора Vi.
Редактор vi позволяет создавать новые файлы и редактировать существующие. Для запуска vi используйте команду vi сопровождаемую именем файла. Например для редактирования файла temporary наберите vi temporary и нажмите клавишу "Enter". Можно запустить vi без имени файла - в этом случае для сохранения результатов работы сообщите имя файла редактору позже.
Когда вы запускаете vi - на экране с левой стороны вы видите тильды (~). Так
обозначаются пустые строки. В нижней части экрана отображается имя текущего
файла и размер :
"filename" 21 lines, 385 charactersЕсли это новый файл сообщение будет выглядеть следующим образом :
"newfile" [New file]При запуске vi без имени файла - нижняя часть экрана будет пустой. Если не отображается одно из этих сообщений - возможно у вас неверный тип терминала. Наберите :q и "Enter" для выхода из vi и установите поддерживаемый тип терминала. Если не знаете как - спросите совет у лаборанта.
Теперь, когда вы знаете как запустить vi, необходимо узнать как завершить сеанс работы с редактором. Редактор vi имеет два рабочих режима и для завершения сеанса работы необходимо перейти в командный режим. Нажмите клавишу "Escape" или "Esc" (если у вас нет такой клавиши попробуйте "^[" или "control-[") для переключения в командный режим. Если вы находясь в командном режиме нажмете клавишу "Escape" - ничего страшного. Возможно прозвучит сигнал, но редактор по-прежнему будет в командном режиме.
Команда для выхода из vi - ":q". В командном режиме наберите двоеточие и "q" и нажмите клавишу "Enter". Если вы вносили изменения в файл - редактор предупредит об этом и не позволит завершить сеанс подобным образом. Выход из редактора без сохранения изменений - ":q!".
Конечно, работая в редакторе, вы хотите сохранять результаты работы. Команда для сохранения изменений - ":w". Можно сохранить изменения и завершить сеанс работы одновременно - ":wq". Для изменения имени файла выполните - ":w filename". Например для сохранения файла с новым именем filename2 выполните : ":w filename2".
Другая возможность завершения сеанса работы с редактором - выполнение команды ":ZZ". В командном режиме выполните ":ZZ" (эквивалент команды ":wq"). Если были сделаны изменения - они будут сохранены. Это самый простой вариант.
Первое, что узнают пользователи о редакторе vi - два режима его работы : командный и вставки текста. Командный - режим ввода команд. Обычно эти команды короткие - состоят из одной или двух букв. Режим вставки текста - вставляется в файл то, что вы набираете на клавиатуре.
По умолчанию редактор запускается в командном режиме. Для переключения в режим вставки текста существует несколько команд. Наиболее часто используемые среди них - "a" и "i". Ниже мы остановимся подробнее на этих командах. Чтобы выйти из режима вставки текста нажмите клавишу "Escape". Если у вас нет такой клавиши попробуйте "^[" или "control-[" Вы можете нажать клавишу "Escape" дважды и редактор все равно будет командном режиме. Нажатие клавиши "Escape" в командном режиме не переведет его ни в какой другой. Может только прозвучать сигнал, сообщающий, что вы уже находитесь в командном режиме.
Команды в этом режиме имеют формат :
Аргумент count - число, начинающееся с символа от 1 до 9. Например : команда "x" удаляет символ в позиции курсора, при вводе команды "23x" - будут удалены 23 символа.
Некоторые команды используют аргумент where, определяющий границы текста, к которым будет применена команда, также параметр where может быть командой перемещения курсора.
Рассмотрим некоторые команды для начала работы с vi. Позже обратим внимание на другие команды.
Редактор vi предоставляет пользователю 36 буферов для хранения информации и также буфер общего назначения. Удаленный или скопированный текст помещается в буфер общего назначения. Многие пользователи vi редко используют другие буферы. Но можно использовать так называемые "поименованные" буферы. Для их применения используется команда ". Эта команда используется в сочетании с буквой или цифрой для определения буфера. Например : команда "mdd использует буфер m для вырезания в него текущей строки. Команды p или P используются для вставки текста. Команда "mp вставит содержимое буфера m за текущей позицией курсора. Эти буферы могут быть использованы командами, рассматриваемыми в следующих двух разделах.
Наиболее часто используемая команда для вырезания текста "d". Эта команда удаляет текст из файла. Использует аргумент count. Команда "dd" удаляет текущую строку. Рассмотрим несколько примеров :
Действие команды "y" (копирование) подобно действию команды "d", но она не удаляет текст, а только копирует его в буфер.
Команды для вставки "p" и "P". Различие между ними в положении вставляемого текста. Команда "p" вставляет текст из буфера после текущей позиции курсора, "P" - вставляет текст перед текущей позицией курсора. Аргумент count определяет количество повторов вставляемого текста.
Редактор vi предоставляет программистам возможность аккуратного оформления кода. Существует переменная определения позиции для каждого уровня вложенности кода. Для ее определния обратите внимание на раздел "Настройка VI и EX". Например для определения отступа равным 4 символам используйте команду ":set sw=4".
Можно также использовать следующие команды (поддерживают аргумент count) :
Редактор vi предоставляет возможность контроля кода по круглым или фигурным скобкам. Команда "%" контролирует парность круглых или фигурных скобок. Установите курсор на скобку и введите команду "%" для перемещения курсора на парную. При отсутствии парной скобки прозвучит сигнал, предупреждающий об ошибке.
Редактор vi предоставляет два вида поиска : строк и символов. Команды "\" и "?" для поиска строк. При выполнении этих команд в нижней части экрана отображается строка введенная вами для поиска. Различие между командами "\" и "?" : "\" осуществляет поиск вниз по файлу, а "?" - вверх. Команды "n" и "N" повторяют поиск в том же или противоположном направлении соответственно. Некоторые символы имеют специальное значение в редакторе vi - поэтому перед ними должен быть введен символ \.
Специальные символы :
Символьный поиск осуществляется в текущей строке командами "f" и "F". Команда "f" осуществляет поиск вперед, "F" - назад, курсор перемещается в позицию найденного символа.
Действие команд "t" и "T" аналогично действию "f" и "F". Различие между ними в положении курсора : после выполнения команды "t" курсор перемещается в позицию перед найденным символом, после выполнения команды "T" - после найденного символа.
Повтор поиска осуществляется командами ";" и ",". Команда ";" повторяет поиск в том же направлении, команда "," - в противоположном.
Установка переменной "ic" (:set ic) позволяет осуществить поиск не учитывая регистр.
Редактор vi предоставляет возможность настройки, осуществляемой установкой параметров командой :set. Далее следует список параметров, установленных на компьтере Wiliki для редакторов vi и ex (для получения списка используется команда :set all в командном режиме).
Некоторые параметы могут быть просто включены или выключены, а некоторые принимают значение (включенное или выключенное состояние называют булевым значением и наличие "no" перед параметром означает, что он выключен). Значения некоторых параметров рассмотрены ниже. Например : для установки параметра autoindent выполните команду :set autoindent или :set ai. Для отмены установки этого параметра : выполните команду :set noautoindent или :set noai.
Существует полезная команда редактора ex для редактора vi -
abbreviate. Она используется для сокращения наиболее часто применяемых
фраз. Синтаксис команды : :ab string thing to substitute for. Например
: если вам необходимо вводить слово "Humuhumunukunukuapua`a", но вы не
хотите каждый раз набирать его полностью - используйте команду ab. Для
данного случая она будет выглядеть так :
:ab 9u
Humuhumunukunukuapua`a
Теперь если вы введете 9u - вы получите полное
значение. При вводе 9university замены не произойдет.
Для удаления сокращения используется команда unabbreviate. Для данного случая - :una 9u. Команда :ab выдаст список всех сокращений.
Другая полезная команда редактора ex - map. Существуют две разновидности команды - для командного режима и для режима вставки текста - map и map! соответственно. Работает сходно с командой ab - последовательность символов заменяется обычно командами редактора vi.
Существуют два пути управления настройками редактора vi - создание файла
.exrc в вашем домашнем каталоге или настройка переменной "EXINIT".
Параметры будут установлены в ваш файл сценария. Если вы используете /bin/csh
(C-Shell) выполните следующие команды :
setenv EXINIT '...'Если вы используете /bin/sh или /bin/ksh выполните эти команды :
export EXINIT EXINIT='...'Не используйте ... как в примерах. Используйте команды. Например : для (для C shell) :
setenv EXINIT 'set ai nu wm=3'
Для выполения нескольких команд разделите их вертикальной чертой (|). Например : для использования команды :map g G совместно с предыдущей выполните
setenv EXINIT 'set ai nu wm=3|map g G'
Используйте выражения в кавычках, после "EXINIT", для применения файла .exrc.
Редактор vi работает с копией файла и после завершения редактирования или по команде сохранения содержание копии перемещается в основной файл. Если возникает аварийная ситуация при редактировании, vi сохраняет результаты работы для последующего восстановления. Обратите внимание : при возникновении подобной ситуации, vi посылает e-mail сообщение с инструкциями о восстановлении данных. Параметр -r означает восстановление. Например : команда vi -r vitalinfo используется для восстановления данных после возникновения аварийной ситуации при редактировании файла vitalinfo. После использования параметра -r для восстановления файла необходимо сохранить результат в существующий файл. Параметр -r действителен только один раз после возникновения аварийной ситуации.
При использовании рабочих станций для работы с редактором vi необходимо помнить следующее : многократное одновременное редактироване одного и того же файла и изменение размера экрана.
Vi использует копию файла для редактирования и сохраняет изменения в существующий файл. Поэтому если редактируется один и тот же файл одновременно несколько раз - при сохранении результатов одна копия может переписать другую. Будьте уверены, что используется один сеанс для редактирования файла.
При работе с терминальной программой можно изменить размеры экрана. Если
возникли проблемы с экраном, что является редкостью, выполните команду :
eval `resize`или :
eval `/usr/bin/X11R6/resize`
Команды сгруппированы по действиям, более подробный обзор смотрите здесь. Для удобства использования сохраните файл в обычном текстовом формате, удалите команды, которые вы не планируете использовать и распечатайте.
Редактор vi построен на основе редактора ex. Редактор ex редактирует построчно. Из редактора vi можно вызвать команду ex - : вводится перед командой. Мы рассмотрим наиболее используемые команды. Если необходимо изменить более одной строки командами :s или :w определяется диапазон. Например : для изменения строк с 3 по 15 используется команда :3,15s/from/this/g.
Webpages maintained by the LinuxFocus Editor team
© Ben Y. Yoshino LinuxFocus.org 2000 Click here to report a fault or send a comment to Linuxfocus |
Translation
information:
|
2000-07-05, generated by lfparser version 1.5