Редактор vi есть почти в каждой системе Linux и UNIX. На самом деле, если в системе есть только один текстовый редактор, то это наверняка vi, поэтому следует знать как им пользоваться. В этом разделе представлены основные команды vi, а для полного руководства по vi, обратитесь к нашему “введению в vi — метод шпаргалки” (смотриРесурсы), или же обратитесь к man-страницам или многочисленным книгам.
Запуск vi
Большинство дистрибутивов Linux сейчас поставляется с vim (от ViIMproved) редактором, а не классическим vi. Vim обратно совместим с vi, для которого также доступна графическая оболочка (gvim), а также обычный текстовый режим. Команда vi обычно является псевдонимом или символьной ссылкой на программу.
Вы можете вспомнить изменение приоритетов, в котором мы пытались изменить приоритет работающего сценария count1.sh. Возможно, вы пытались сделать это сами, но команда выполнялась так быстро, что вы не успевали изменить приоритет с помощью renice. Давайте запустим редактор vi и добавим строку в начало файла, чтобы заснуть на 20 секунд, и у нас появилось время, чтобы изменить приоритеты.
Чтобы запустить редактор vi, используйте команду vi, а также имя файла в качестве параметра. Редактор имеет много опций. За более полной информацией обратитесь к man-страницам. Наберите команду
vi count1.sh
Вы увидите вывод как в Листинге 115. Если вы используете vim, некоторые слова могут быть подсвечены другим цветом. Vim поддерживает подсветку синтаксиса (она не являлась частью редактора vi), и по умолчанию она может быть включена.
Листинг 115. Редактирование count1.sh в vi
x="$1"
echo "$2" $(date)
while [ $x -gt 0 ]; do let x=$x-1;done
echo "$2" $(date)
~
~
~
~
~
~
"count1.sh" 4L, 82C
Режимы vi
едактор vi может работать в двух режимах:
Режим команд
В режиме команд, вы перемещаетесь по файлу и выполняете такие действия как поиск текста, удаление текста, изменение текста и так далее. Обычно запуск редактора происходит в режиме команд.
Режим вставки
В режиме вставки вы набираете текст согласно позиции курсора. Чтобы вернуться в режим команд, нажмите Esc (Escape) клавишу.
Эти два режима определяют поведение редактора. Vi датирован временем, когда не все терминальные клавиатуры содержали клавиши перемещения курсора, поэтому вся работа может быть выполнена в vi с помощью обычных клавиш печатной машинки, а также паре специальных клавиш как Esc и Insert. Однако вы можете настроить vi на использование дополнительных клавиш, если они доступны; большинство клавиш клавиатуры выполняют какую-либо работу в vi. Из-за своего прошлого и медленной работы ранних терминальных соединений, vi заслужил хорошую репутацию за счет использования коротких и непонятных команд.
Выход из vi
Одну из первых вещей, которой я хотел бы выучить в новом редакторе, это как осуществлять выход из программы до того, как начать работать. Следующие способы выхода vi включают сохранение или отмену изменений или перезапуск редактирования файла. Если команды не работают, то возможно, вы находитесь в режиме вставки, поэтому нажмите Esc, чтобы покинуть режим вставки и перейти в режим команд.
:q!
Выход с отменой всех изменений в файле. Это часто используемая команда, чтобы вернуть все в первоначальный вид.
:w!
Записать файл (в независимости от того было ли модифицировано содержимое или нет). Попытка перезаписать существующие файлы или файлы только для чтения или другие не записываемые файлы. Вы можете определить имя файла в качестве параметра, и этот файл будет записан, а не тот с которым вы начали работу. В общем безопаснее пропускать !, кроме случаев, когда вы знаете, что делаете.
ZZ
Записать файл, если он был изменен. Затем произвести выход. Эта команда часто применяется для нормального выхода из vi.
:e!
Редактировать текущую копию файла на диске. Команда перезагрузит файл, отменив созданные вами изменения. Вы также можете использовать команду, если копия на диске была изменена по какой-либо причине и вам требуется последняя ее версия.
:!
Запустить команду интерпретатора. Наберите команду и нажмите Enter. Когда команда завершится, вы увидите ее вывод и приглашение вернуться в редактор vi.
Замечания:
1. Когда вы наберете двоеточие (:), то курсор переместится вниз экрана, где вы можете набирать команду и параметры.
2. Если вы пропустите восклицательный знак в описанных выше командах, то можете получить сообщение об ошибке, как например, о том, что изменения не были сохранены или файл не может быть записан (например, вы редактируете файл только для чтения).
3. У команды : есть длинные формы (:quit, :write, :edit), но они используются редко.
Перемещение
Следующие команды используются для перемещения по файлу:
h
Перейти на один символ влево на текущей строке
j
Перейти на следующую строку
k
Перейти на предыдущую строку
l
Сдвинуться на один знак вправо в текущей строке
w
Перейти к следующему слову на текущей строке
e
Перейти на предыдущее слово в текущей строке
b
Перейти в начало предыдущего слова на текущей строке
Ctrl-f
Пролистнуть страницу вперед
Ctrl-b
Пролистнуть страницу назад
Если вы наберете число перед этими командами, то команда будет исполнена определенное число раз. Это число называется счетчиком повторений или просто счетчиком. Например, 5h осуществит переход влево на пять символов. Вы можете использовать счетчики повторений со многими командами vi.
Переход по строкам
Следующие команды используются для перехода к определенным строкам вашего файла:
G
Перейти к определенной строке вашего файла. Например, 3G переходит к строке 3. Без параметров, G переходит к последней строке файла.
H
Переходит к строке, отстоящей вниз относительно верхнего края экрана. Например, 3H осуществляет переход к третьей строке сверху относительно текущего экрана.
L
Аналог H, но переход осуществляется относительно нижней части экрана. Так осуществляет на вторую строку относительно нижней части экрана.
Поиск
Вы можете осуществлять поиск в файле с помощью регулярных выражений:
/
Используйте / и регулярное выражение для поиска вперед по файлу.
?
Используйте ? и регулярное выражение для поиска по файлу назад.
n
Используйте n, чтобы повторить последний поиск в любом из направлений.
Вы можете предварять все вышеперечисленные команды числом, означающим счетчик повторений. Так 3/x найдет третье вхождение x относительно текущей позиции, так как и /x за которой следует команда 2n.
Модификация текста
Используйте следующие команды, если вам надо вставить, удалить или изменить текст:
i
Перейти в режим вставки в текущей позиции. Наберите свой текст и нажмите Esc, чтобы вернуться в режим команд. Используйте I, чтобы начать вставку в начале текущей строки.
a
Войти в режим вставки после символа в текущей позиции. Наберите свой текст и нажмите Esc, чтобы вернуться в режим команд. Используйте A, чтобы осуществить вставку в конец текущей строки.
c
Используйте c, чтобы изменить текущий символ и перейти в режим вставки, чтобы набрать замещаемые символы.
o
Вставить новую строку сразу за текущей строкой. Используйте O, чтобы вставить новую строку сразу над текущей строкой.
cw
Удалить остаток текущего слова, войти в режим вставки и заменить его. Используйте счетчик повторений, чтобы заменить несколько слов. Используйте c$, чтобы заменить слова до конца строки.
dw
Тоже, что и cw (и c$) выше, только вход в режим вставки не осуществляется.
dd
Удалить текущую строку. Используйте счетчик, чтобы удалить несколько строк.
x
Удалить символ в позиции курсора. Используйте счетчик, чтобы удалить несколько символов.
p
Вставить последний удаленный текст после текущего символа. Используйте P, чтобы вставить его до текущего символа.
xp
Комбинация x и p. производит замену символа в позиции курсора и символа справа от него.
Заключение
Мы собрались добавить строку в файл count1.sh. Чтобы сохранить оригинал и сохранить модификацию в count2.sh, мы можем использовать команды vi, после того как открыли файл в vi. Заметим, что
Листинг 116. Команды редактора для добавления строки в count1.sh
1G
O
sleep 20
:w! count2.sh
:q
Просто, когда знаешь как.
В следующем руководстве этой серии рассматривается Тема 104 об Устройствах, файловых систем Linux и Структуре файловой системы (FHS).
Взято на ibm developerworks