Редактор vi очень часто применяется для записи и редактирования файлов в системе UNIX. Для новичка он может выглядеть очень не понятно и пугающе, но на самом деле ничего страшного в нем нет. В этом разделе читатель узнает о том, как с помощью этого редактора можно создавать и сохранять файлы, и увидит, что на самом деле он является простым редактором с множеством интересных и мощных функциональных возможностей.
Создание и изменение файлов в vi
Запускается редактор vi путем ввода в приглашении оболочки команды vi, а лучше даже — команды vi имя_файла, приводящей к открытию редактора и отображению в нем содержимого указанного на месте имя_файла файла. В случае если указанного файла не существует, редактор vi выделяет буфер в памяти, чтобы позднее все добавленное содержимое можно было сохранить в новом файле.
Давайте предположим, что необходимо создать и отредактировать новый файл по имени test.txt. После ввода команды vi test.txt файл будет создан и курсор начнет мигать, но вводить какой-либо текст пока будет нельзя, так как для этого нужно находиться в режиме ввода. Чтобы перейти в режим ввода, достаточно ввести букву i, которая обозначает режим вставки (i — insert) или ввода (i — input). После этого можно начинать вводить текст точно так же, как и в любом другом обычном текстовом процессоре.
На заметку! При желании создать файл, но не вводить в него данные, лучше использовать команду touch. В случае выполнения команды touch с именем нового файла в качестве аргумента,она просто создает новый пустой файл (если только не указан флаг -c), а в случае передачи ей в качестве атрибута имени существующего файла, она заменяет время последнего получения доступа к этому файлу текущим. Например, команда touch может выглядеть как touch program.one. Выполнение данной команды touch приведет к замене значений времени последнего обращения и последнего изменения файла program.one текущей датой и временем. Если файла program.one не существует, тогда выполнение этой команды приведет к созданию нового файла с таким именем.
В таблице ниже показаны некоторые наиболее основные команды навигации, которыми в редакторе vi можно пользоваться для перемещения по файлам:
Команда | Описание |
h | Переход на один символ влево |
l | Переход на один символ вправо |
j | Переход на одну строку вниз |
k | Переход на одну строку вверх |
w | Переход к началу следующего слова |
b | Переход к началу предыдущего слова |
$ | Переход в конец текущей строки |
^ | Переход в начало текущей строки |
:G | Переход в конец файла |
:1 | Переход в начало файла |
Помимо команд для перемещения курсора, в редакторе vi также доступно и много команд для манипулирования текстом, но знать их всех необходимо только работающему на полную ставку администратору систем или разработчику UNIX; обычный средне-статистический администратор баз данных вполне может обходиться и теми несколькими текстовыми командами, которые перечислены в таблице ниже:
Команда | Описание |
i | Начинает вставку с текущего символа |
a | Начинает вставку со следующего символа |
o | Начинает вставку с новой строки ниже |
O | Начинает вставку с новой строки выше |
x | Удаляет символ, на котором находится курсор |
dd | Удаляет строку, на которой находится курсор |
r | Заменяет символ, на котором находится курсор |
/text | Выполняет поиск определенной строки текста |
:s/old/new/g | Заменяет строку текста новой строкой |
yy | Перемещает строку |
p | Вставляет скопированную строку после той, на которой в текущий момент находится курсор |
P | Вставляет скопированную строку над той, на которой в текущий момент находится курсор |
:wq | Сохраняет изменения и завершает работу редактора |
:q | Завершает работу редактора без сохранения изменений |
Более подробную информацию о поддерживаемых в редакторе vi командах для навигации и манипуляции текстом можно найти в каком-нибудь хорошем справочнике, например, в книге Марка Собелла (Mal Sobell) A Practical Guide to the UNIX System (Addison Wesley).