Организация UNIX-систем и ОС Solaris


Текстовый редактор vi


Vi может находиться в одном из двух режимов - командном режиме или режиме ввода. При запуске редактор начинает работу в командном режиме. В этом случае все, что вы набираете на клавиатуре, интерпретируется как команда. Команды в vi короткие - почти все состоят из одной или двух букв. Некоторые команды редактора vi отображаются в служебной строке. Служебной строкой в vi считается последняя строка экрана. Большинство команд редактора никак не отображаются, хотя выполняются. Это не очень удобно, если у пользователя дрожат руки, или он не помнит, какую клавишу только что нажал. Так можно легко стереть или модифицировать текст неожиданным образом. Старайтесь не допускать случайных нажатий на клавиши в командном режиме!

Vi отображает вводимую команду в служебной строке, если это команда поиска, или если команда вводится в режиме совместимости с редактором ed. При отображении чего-либо в служебной строке экрана строка файла, которая раньше показывалась в этой строке, никак не меняется.

Для перехода в режим ввода дайте команду a, i или o. После этого можно будет начинать ввод текста. Текст начнет соответственно вводиться в позиции курсора, в позиции, следующей за позицией курсора, или в начале новой строки, которая появится под текущей строкой. В режиме ввода все клавиши, которые набираются на клавиатуре, за исключением клавиши <Esc>, интерпретируются как набираемый текст. <Esc> - это переход из режима ввода в режим команд.

В режиме ввода не всегда можно пользоваться клавишами передвижения по тексту (стрелками, PgUp, PgDn, Home, End и т.д.). Если терминал настроен не совсем корректно, то нажатие, например, клавиши "стрелка вверх", vi может воспринять как нажатие <Esc>, за которым следует [B. Поэтому может случиться так, что нажав стрелку "вверх" в режиме ввода, вы незаметно для себя перейдете в режим команд. Если вы продолжите ввод текста, он будет воспринят как команда. Таким образом, иногда можно передвигаться по тексту в режиме ввода, но лучше сначала выйти в командный режим, затем перейти по тексту в нужное место и снова перейти в режим ввода.

Переход по тексту в командном режиме выполняется клавишами передвижения по тексту (стрелками, PgUp, PgDn, Home, End), а также нажатием <Ctrl-F> (forward, вперед на страницу), <Ctrl-B> (backward, назад на страницу). Бывает, что клавиши-"стрелки" не работают. Тогда можно использовать вместо них клавиши h, j, k, l следующим образом:


Рис. 2.4. 

Эти клавиши были выбраны только потому, что они расположены рядом; буквы h, j, k и l не соотносятся с английскими словами, которые можно было бы ассоциировать с передвижениями вверх-вниз, вправо-влево.

В таблице 2.2 перечислены основные команды редактора vi. Полный список можно посмотреть в руководстве по vi (man vi) или в книгах Арнольда Роббинса (Arnold Robbins) "Vi Pocket Reference"1) и "Learning the vi Editor".

Таблица 2.2. Основные команды редактора vi

начало ввода
aперейти в режим ввода, начать ввод в позиции, следующей за позицией курсора
iперейти в режим ввода, начать ввод в позиции курсора
oперейти в режим ввода, добавить пустую строку под текущей строкой и начать ввод в новой строке
операции с буфером
ddвырезать текущую строку в буфер
xвырезать текущий символ в буфер
uотменить последнее действие
yyкопировать текущую строку в буфер
pвставить строку из буфера под текущей
замена символа
rnзаменить символ в позиции курсора на n
перемещение по тексту
0перейти в начало строки
$перейти в конец строки
jперейти на сроку вниз
kперейти на сроку вверх
hперейти на символ влево
lперейти на символ вправо
%если курсор стоит в позиции символа "скобка" (круглая, квадратная или фигурная), перейти в позицию соответствующей второй скобки
Ctrl-Gпоказать текущую позицию (номер строки) в файле
поиск и замена
/поиск вперед
?поиск назад
:s/что/на что/[g]поиск и замена
запись и завершение редактирования

ZZ

:q

выход из редактора, запись файла

выйти из редактора

:q!выйти без записи
:wзаписать изменения
:wqзаписать и выйти
:w!записать, даже если нет права записи в файл (срабатывает, только если выполнена от имени root)
:wимя файла записать в файл с другим именем; в дальнейшем будет считаться, что редактируется именно этот файл с другим именем
<Esc>переход в командный режим
<


Начало  Назад  Вперед



Книжный магазин