Запуск vi
Большинство дистрибутивов Linux сейчас поставляется с vim (от ViIMproved) редактором, а не классическим vi. Vim обратно совместим с vi, для которого также доступна графическая оболочка (gvim), а также обычный текстовый режим. Команда vi обычно является псевдонимом или символьной ссылкой на программу.
Вы можете вспомнить изменение приоритетов, в котором мы пытались изменить приоритет работающего сценария count1.sh. Возможно, вы пытались сделать это сами, но команда выполнялась так быстро, что вы не успевали изменить приоритет с помощью renice. Давайте запустим редактор vi и добавим строку в начало файла, чтобы заснуть на 20 секунд, и у нас появилось время, чтобы изменить приоритеты.
Чтобы запустить редактор vi, используйте команду vi, а также имя файла в качестве параметра. Редактор имеет много опций. За более полной информацией обратитесь к man-страницам. Наберите команду
Код: Выделить всё
vi count1.sh
Листинг 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 может работать в двух режимах:
Режим команд
В режиме команд, вы перемещаетесь по файлу и выполняете такие действия как поиск текста, удаление текста, изменение текста и так далее. Обычно запуск редактора происходит в режиме команд.
Режим вставки
В режиме вставки вы набираете текст согласно позиции курсора. Чтобы вернуться в режим команд, нажмите Esc (Escape) клавишу.
Эти два режима определяют поведение редактора. Vi датирован временем, когда не все терминальные клавиатуры содержали клавиши перемещения курсора, поэтому вся работа может быть выполнена в vi с помощью обычных клавиш печатной машинки, а также паре специальных клавиш как Esc и Insert. Однако вы можете настроить vi на использование дополнительных клавиш, если они доступны; большинство клавиш клавиатуры выполняют какую-либо работу в vi. Из-за своего прошлого и медленной работы ранних терминальных соединений, vi заслужил хорошую репутацию за счет использования коротких и непонятных команд.
Выход из vi
Одну из первых вещей, которой я хотел бы выучить в новом редакторе, это как осуществлять выход из программы до того, как начать работать. Следующие способы выхода vi включают сохранение или отмену изменений или перезапуск редактирования файла. Если команды не работают, то возможно, вы находитесь в режиме вставки, поэтому нажмите Esc, чтобы покинуть режим вставки и перейти в режим команд.
Код: Выделить всё
:q!
Код: Выделить всё
:w!
ZZ
Записать файл, если он был изменен. Затем произвести выход. Эта команда часто применяется для нормального выхода из vi.
Код: Выделить всё
:e!
Код: Выделить всё
:!
Замечания:
1. Когда вы наберете двоеточие (:), то курсор переместится вниз экрана, где вы можете набирать команду и параметры.
2. Если вы пропустите восклицательный знак в описанных выше командах, то можете получить сообщение об ошибке, как например, о том, что изменения не были сохранены или файл не может быть записан (например, вы редактируете файл только для чтения).
3. У команды : есть длинные формы (:quit, :write, :edit), но они используются редко.
Перемещение
Следующие команды используются для перемещения по файлу:
Код: Выделить всё
h
Код: Выделить всё
j
Код: Выделить всё
k
Код: Выделить всё
l
Код: Выделить всё
w
Код: Выделить всё
e
Код: Выделить всё
b
Код: Выделить всё
Ctrl-f
Код: Выделить всё
Ctrl-b
Если вы наберете число перед этими командами, то команда будет исполнена определенное число раз. Это число называется счетчиком повторений или просто счетчиком. Например, 5h осуществит переход влево на пять символов. Вы можете использовать счетчики повторений со многими командами vi.
Переход по строкам
Следующие команды используются для перехода к определенным строкам вашего файла:
Код: Выделить всё
G
Код: Выделить всё
H
Код: Выделить всё
L
Поиск
Вы можете осуществлять поиск в файле с помощью регулярных выражений:
Код: Выделить всё
/
Код: Выделить всё
?
Код: Выделить всё
n
Вы можете предварять все вышеперечисленные команды числом, означающим счетчик повторений. Так 3/x найдет третье вхождение x относительно текущей позиции, так как и /x за которой следует команда 2n.
Модификация текста
Используйте следующие команды, если вам надо вставить, удалить или изменить текст:
Код: Выделить всё
i
Код: Выделить всё
a
Код: Выделить всё
c
Код: Выделить всё
o
Код: Выделить всё
cw
Код: Выделить всё
dw
Код: Выделить всё
dd
Код: Выделить всё
x
Код: Выделить всё
p
Код: Выделить всё
xp
Заключение
Мы собрались добавить строку в файл count1.sh. Чтобы сохранить оригинал и сохранить модификацию в count2.sh, мы можем использовать команды vi, после того как открыли файл в vi. Заметим, что означает нажать Esc клавишу.
Листинг 116. Команды редактора для добавления строки в count1.sh
Код: Выделить всё
1G
O
sleep 20
:w! count2.sh
:q