AIX Portal: Статьи ОС AIX: Справочник по редактору VI  

Справочник по редактору VI

Всем бьющимся головой о монитор посвящается...

Список команд

В принципе, для начала работы с vi достаточно запомнить десяток основных команд. Вот они - в первой таблице. Вы можете распечатать её и приклеить к монитору. Но перед этим - важное замечание: как Вы думаете, какая команда самая распространённая? Правильно, удалить неверно введённцй, ой, введённый символ. Это команда х. Только вот какая незадача - она удаляет символ над курсором, а когда Вы ввели этот неправильный символ, курсор уже ушёл вперёд. Так что же - надо для удаления символа нажимать hx? Нет, так как при переходе в командный режим (нажатии <ESC>) курсор автоматически переходит на один символ назад - на только что набранный символ. Это происходит всегда, ведь vi не может догадаться, что именно Вы хотите сделать, и происходит это именно при переходе в командный режим, то есть повторное нажатие <ESC> не переместит курсор.

Основные команды vi
vi filename Вызов редактора vi для редактирования файла filename
a Добавить текст после курсора (переход в режим ввода)
<ESC> Перейти из режима ввода в командный режим
h Переместить курсор на один символ влево
j Переместить курсор вниз на одну строку
k Переместить курсор вверх на одну строку
l Переместить курсор на один символ вправо
x Удалить символ
WWW.AIXPORTAL.RU - узнать всё об AIX
:w Записать в файл
:q Завершить работу с vi
:q! Завершить работу с vi без сохранения файла
:wq Записать буфер в файл и завершить работу с vi
ZZ Записать буфер в файл и завершить работу с vi

Обратите внимание на базовые команды перемещения курсора - hjkl. Вполне вероятно, в терминале будут работать и стрелки, но эти команды стоит запомнить - они Вам пригодятся при работе в командной строке ksh. А запомнить их просто - это обычная "распальцовка" - влево-вниз-вверх-вправо.
hjkl fingers

У vi есть масса возможностей. В следующих таблицах команды сгруппированы по предназначению. Кстати, любую команду vi можно выполнить несколько раз - для этого надо перед командой указать число повторений. Например, 10k - перейти на 10 строк вверх, а 10o (эта команда будет дальше) - вставить 10 строк ниже курсора. Полезная подсказка?

Позиционирование курсора
h Переместить курсор на один символ влево
j Переместить курсор вниз на одну строку
k Переместить курсор вверх на одну строку
l Переместить курсор на один символ вправо
$ Переместить курсор на последний символ в строке
0(ноль) Переместить курсор на первый символ в строке
^ Переместить курсор на первый не пустой символ в строке
   
w Переместить курсор к началу следующего слова
W Переместить курсор к началу следующего слова, не учитывая все знаки пунктуации
   
1G Перейти к первой строке в файле
G Перейти к последней строке в файле
nG Перейти к строке номер n в файле
:set num Показывать номера строк в файле
:set nonum Не показывать номера строк в файле
   
^f Прокрутить экран вперёд на полное окно.
^b Прокрутить экран назад на полное окно.

 

Поиск и замена текста по шаблону (*)
/pattern<ENTER> Поиск вперёд в буфере до первого появления шаблона pattern.
?pattern<ENTER> Поиск назад в буфере до первого появления шаблона pattern.
n Повторить последнюю команду поиска
   
:s/pattern/new_text/<ENTER> Заменить первое появление шаблона pattern в текущей строке на new_text
:s/pattern/new_text/g<ENTER> Заменить каждое появление шаблона pattern в текущей строке на new_text
:g/pattern/s//new_text/g<ENTER> Заменить каждое появление шаблона pattern в файле на new_text

* В шаблоне (pattern) работают регулярные выражения (RE - Regular Expressions). Подробнее про регулярные выражения можно найти в IBM AIX InfoCenter.

Ввод, удаление и замена текста
a Создать текст после курсора (переход в режим ввода)
A Создать текст в конце текущей строки (переход в режим ввода)
i Создать текст перед курсором (переход в режим ввода)
   
o Вставить новвую строку ниже текущей строки и перейти в неё (переход в режим ввода)
O Вставить новвую строку выше текущей строки и перейти в неё (переход в режим ввода)
   
<BACKSPACE> В режиме ввода: удалить текущий символ
x Удалить текущий символ
dw Удалить слово над курсором (текст помещается во временный буфер)
dW Удалить слово и пунктуацию над курсором (текст помещается во временный буфер)
dd Удалить текущую строку (текст помещается во временный буфер)
rx Заменить текущий символ на символ x
R Перейти в режим ввода с заменой текста

 

Дополнительные команды
u Отменить последнюю команду
. Повторить последнюю команду
j Соединить текущую строку со строкой, расположенной ниже
yy Скопировать строку во временный буфер
p Поместить содержимое временного буфера, полученное с помощью команды y или команд удаления, в текст после курсора
:show mode<ENTER> Показывать режим работы vi в строке статуса (командный или ввода)

 

Работа с файлами и выход из редактора
ZZ Записать текст в файл и завершить работу с vi
:wq<ENTER> Записать текст в файл и завершить работу с vi
:w<ENTER> Записать текст в файл
:w!<ENTER> Записать текст в файл, даже при недостатке прав доступа (если вы владелец файла или root)
:q<ENTER> Завершить работу с vi без записи текст в файл, если буфер не изменялся
:q!<ENTER> Завершить работу с vi без записи текст в файл, даже если текст изменялся
:w filename<ENTER> Записать текст в новый файл filename
:w! filename<ENTER> Перезаписать содержимое текста в уже существующий файл filename

Хотите узнать, г де ещё можно использовать команды vi? Тогда читайте дальше.

При подготовке статьи использована стандратная документация по редактору vi.

© Дмитрий Миронов. 04 сентября 2007 г.

Правила портала.

Вы можете обсудить эту статью на Форуме.