ГЛАВНАЯ ФОТОАЛЬБОМ РАЗНОЕ ГОСТЕВАЯ КНИГА
ИСПОЛЬЗОВАНИЕ РЕДАКТОРА VI в ОС LINUX

Текстовый редактор, это программа, используемая для редактирования файлов, которые содержат текст, например письма, С-программы или системные конфигурационные файлы. Хотя в Linux много всяких разных редакторов, единственный редактор, который вы с гарантией найдете в любом UNIX - это vi (“visual editor”). vi - это не самый простой в использовании редактор. Но поскольку он так распространен в мире UNIX и в любой момент может вам потребоваться, он заслуживает хоть какого-то описания здесь.

Выбор редактора, это дело персонального вкуса и стиля. Многие пользователи предпочитают витиеватый и мощный Emacs - редактор с самым большим набором возможностей, по сравнению со всеми другими редакторами в мире UNIX. Например, Emacs имеет свой собственный встроенный диалект языка программирования LISP и множество расширений (одно из которых ”Eliza” - в некотором роде программа искусственного интеллекта). Однако, поскольку Emacs со всеми поддерживающими его файлами сравнительно велик, его нет на многих системах. vi, наоборот, маленький, но, увы, более сложный в использовании. Но когда вы с ним освоитесь, вы поймете, что он очень простой. Правда осваивать его сложно.

Этот раздел - вразумительное введение в vi. Мы не будем обсуждать все его свойства, а только те, которые вы должны знать, чтобы начать работать.

Концепции

При использовании vi в любое время вы можете находиться в одном из трех режимов работы. Эти режимы известны как командный режим, режим вставки и режим последней строки. Когда вы начинаете работать с vi - вы в командном режиме. Этот режим позволяет использовать определенные команды для редактирования файлов или перехода в другие режимы. Например, напечатав ``x'' при нахождении в командном режиме, удаляете символ, находящийся перед курсором. Стрелки передвигают курсор по редактируемому файлу. Большинство команд, используемых в командном режиме, состоит из одного или двух символов.

Вставку или редактирование текста вы осуществляете в режиме вставки. При использовании vi вы, возможно, большую часть времени находитесь именно в этом режиме. Вы переходите в режим вставки с помощью команды ”i” (``insert'' - вставка) из командного режима. В режиме вставки вы вставляете текст в документ на место, указываемое курсором. Для завершения режима вставки и возврата в командный режим следует нажать esc.

Режим последней строки - это специальный режим, используемый для расширения возможностей командного режима. При вводе таких команд они появляются в последней строке экрана. Например, если вы напечатаете ”:” в командном режиме, вы перейдете в режим последней строки и сможете использовать такие команды, как ”wq” (записать (write) файл и выйти (quit) из vi), или ”q” (выйти из vi без сохранения изменений). Режим последней строки в общем случае используется для команд vi, которые длиннее одного символа. В режиме последней строки вы вводите однострочные команды и нажимаете enter для их выполнения.

Начала vi

Лучший способ освоить эту концепцию, это вызвать vi и отредактировать файл. В примере “screens”, приводимом ниже, мы собираемся только показать несколько строк текста, будто бы экран состоит всего из шести строк (вместо двадцати четырех).

Вызов vi

vi <имя файла>

где <имя файла> - имя редактируемого файла.

Ну так вызовите vi, напечатав

/home/user# vi user.txt

для редактирования файла user.txt . Вы увидите нечто вроде

__________________________________

|~                                                                  |

|~                                                                  |

|~                                                                  |

|~                                                                  |

|~                                                                  |

|”user.txt”_[New_file]_________________ |

Столбец символов ``~'' говорит о том, что вы стоите на конце файла.

Вставка текста

Вы находитесь в командном режиме; для того, чтобы вставлять текст в файл, нажмите i (что переведет вас в режим вставки) и начинайте печатать.

____________________________________

|Now we start a good education about Linux.     |

|~                                                                      |

|~                                                                      |

|~                                                                      |

|~                                                                      |

|~__________________________________|

При вставке текста вы можете напечатать столько строк, сколько пожелаете (нажимая return после каждой строки), и можете корректировать ошибки используя клавишу возврата (backspace).

Для завершения режима вставки и возврата в командный режим нажмите esc.

В командном режиме вы можете использовать клавиши со стрелками для перемещения по файлу. Здесь, поскольку мы имеем только одну строку текста, попытки использовать стрелки "вверх" и "вниз" приведут лишь к тому, что vi подаст звуковой сигнал.

Есть несколько способов вставки текста, отличных от использования команды i. Например, команда a вставляет в текст, начиная после текущего положения курсора, вместо текущей позиции курсора. Используйте левую стрелку для перемещения курсора между словами “good” и “education”.

___________________________________

| Now we start a good_education about Linux. |

|~                                                                     |

|~                                                                     |

|~                                                                     |

|~                                                                     |

|~__________________________________|

Нажмите a, для начала режима вставки, напечатайте ”wo”, а затем нажмите esc для возврата в командный режим.

Для того, чтобы начать вставку текста в строку ниже текущей, используйте команду “ о” . Например, нажмите o и напечатайте строчку или две

___________________________________

| Now we start a good_education about Linux. |

| And we will be good specialist.                       |

|~                                                                     |

|~                                                                     |

|~                                                                     |

|~__________________________________|

Но помните, что в любое время вы находитесь либо в командном режиме (где команды, такие как i, a или o могут применяться) или в режиме вставки (где вы вставляете текст, а затем с помощью esc возвращаетесь в командный режим) или в режим последней строки (в котором вы расширяете расширяемые команды, как это обсуждается ниже).

 

Удаление текста

В командном режиме команда “x” удаляет символ перед курсором. Если вы нажмете x пять раз, вы закончите в ситуации:

___________________________________

| Now we start a good_education about Linux. |

| And we will be good specia_                          |

|~                                                                     |

|~                                                                     |

|~                                                                     |

|~__________________________________|

Теперь нажмите a, вставьте некоторый текст, а затем нажмите esc:

______________________________________________

| Now we start a good_education about Linux.                       |

| And we will be good specialist and perfect system admin._  |

|~                                                                                          |

|~                                                                                          |

|~                                                                                          |

|~                                                                                          |

|~____________________________________________ |

Вы можете удалять целые строки, набирая команду dd (т.е. нажимая d дважды). Если ваш курсор на второй строке, и вы напечатали dd,

_____________________________________

| Now we start a good_education about Linux.     |

|~                                                                         |

|~                                                                         |

|~                                                                         |

|~                                                                         |

|~____________________________________|

Чтобы удалить слово, на котором находится курсор, используйте команду dw.

Поместите курсор на слово “good” и напечатайте dw.

_____________________________________

| Now we start a education about Linux.                |

|~                                                                         |

|~                                                                         |

|~                                                                         |

|~                                                                         |

|~ ___________________________________|

 

Изменение текста

Вы можете заменить фрагменты текста, используя команду R. Поместите курсор на первую букву слова “good”, нажмите R и напечатайте слово ”bad”.

_____________________________________

| Now we start a bad education about Linux._      |

|~                                                                        |

|~                                                                        |

|~                                                                        |

|~                                                                        |

|~____________________________________|

Использование R для редактирования текста очень походит на на команды i и a, но R заменяет прежний текст вместо вставки в него. Команда r заменяет один символ, отмеченный курсором. Например, переместите курсор на начало слова “Now” ' и напечатайте r, а следом C, то вы получите:

_____________________________________

| Cow we start a bad education about Linux._      |

|~                                                                         |

|~                                                                         |

|~                                                                         |

|~                                                                         |

|~ ___________________________________ |

Команда ”&tilde” изменяет размер буквы, отмеченной курсором: большую делает маленькой и наоборот. Например, если вы поместите курсор на ”o” в ”Cow” и затем последовательно будете нажимать ~, вы в конечном итоге получите:

________________________________________________

| COW WE START A BAD EDUCATION ABOUT LINUX._  |

|~                                                                                               |

|~                                                                                               |

|~                                                                                               |

|~                                                                                               |

|~_______________________________________________|

 

Команды перемещения

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

Команда w перемещает курсор на начало следующего слова;

b - перемещает на начало предыдущего слова.

Команда 0 (это ноль) передвигает курсор на начало текущей строки, а команда $ перемещает на конец строки.

При редактировании больших файлов вы хотите перемещаться вперед и назад сразу на размер экрана. Нажатием ctrl-F курсор перемещается на экран вперед, с помощью ctrl-B - на экран назад.

Для того, чтобы переместить курсор в конец файла, напечатайте G. Можно переместиться также на любую строку, напечатав команду 10G вы переместите курсор на десятую строку файла. Для того, чтобы встать на начало (на первую строку), используйте 1G.

Вы можете сочетать команды перемещения с другими командами, такими как удаление. Например, команда d$ удалить от местоположения курсора до конца строки; dG удалит все от курсора до конца файла и т.д.

Сохранение файлов и выход из vi

Для выхода из vi без внесения изменений в ранее существовавший файл используйте команду :q!.

Когда вы напечатаете ”:” , курсор переместится на последнюю строку экрана, поскольку вы перейдете в режим последней строки.

_______________________________________________

| COW WE START A BAD EDUCATION ABOUT LINUX.  |

|~                                                                                             |

|~                                                                                             |

|~                                                                                             |

|~                                                                                             |

|~                                                                                             |

|: ______________________________________________ |

В режиме последней строки могут выполняться некоторые расширенные команды.

Одна из них - q!, которая позволяет выйти из vi без записи.

Команда :wq сохраняет (записывает) файл, а затем выходит из vi. Команда ZZ (в режиме команд, без `:'') эквивалентна :wq. Помните, что вы должны нажать enter после набора команды в режиме последней строки. Если хотите записать файл без выхода из /vi, используйте просто :w.

Редактирование еще одного файла

Для того, чтобы отредактировать другой файл, используйте команду :e.

Например, чтобы прекратить редактирование файла user.txt и перейти к редактированию файла user1.txt, используйте команду

_______________________________________________

| COW WE START A BAD EDUCATION ABOUT LINUX.  |

|~                                                                                             |

|~                                                                                             |

|~                                                                                             |

|~                                                                                             |

|~                                                                                             |

|:e user1.txt ______________________________________ |

Если вы используете :e без предварительного сохранения файла, то сначала вы получите сообщение об ошибке.

____________________________________________________________

|No_write_since_last_change_(":edit!"_overrides)____________________|

которое просто означает, что vi не желает редактировать другой файл, пока не будет сохранен первый. В этот момент вы можете использовать :w, чтобы сохранить исходный файл, а затем использовать :e или использовать команду

_______________________________________________

| COW WE START A BAD EDUCATION ABOUT LINUX.  |

|~                                                                                             |

|~                                                                                             |

|~                                                                                             |

|~                                                                                             |

|~                                                                                             |

|:e! user1.txt ______________________________________|

”!” говорит vi, что вы на самом деле имеете в виду - редактировать новый файл без сохранения изменений, которые делались в первом.

Включение других файлов

Если вы используете команду :r, вы можете включить содержимое другого файла в текущий файл. Например, команда

:r user1.txt

вставит содержимое файла user1 .txt в данное место текста.

Выполнение команд Shell

Вы можете также выполнять команды прямо из vi. Команда :r! работает как :r, но вместо чтения файла она вставляет выход данной команды в буфер, в место, где находится курсор. Например, если вы используете команду

:r! ls -F

вы получите в результате

_______________________________________________

| COW WE START A BAD EDUCATION ABOUT LINUX.  |

|letters/                                                                                     |

|misc/                                                                                       |

|papers/_                                                                                  |

|~                                                                                             |

|~ _____________________________________________  |

Вы можете выполнить команду a, находясь в редакторе vi и вернуться в редактор после ее завершения Напрмиер, если вы используете команду

:! ls -F

будет выполнена команда ls -F, а результат выдан на экран, а не вставлен в редактируемый файл. Если вы используете команду

:shell

vi запустит shell, который позволит временно "отложить" vi и выполнить команды. После выхода из shell (используя команду exit) вы вернетесь в vi.

Получение помощи

vi не слишком силен в интерактивной помощи (да и большинство UNIX-ов также), но вы всегда можете посмотреть страницы Руководства для vi. vi - это "визуальная составляющая" редактора ex; это ex делает многое для поддержания режима последней строки и командного режима в vi. Так что в дополнение к чтению Руководства по vi посмотрите также Руководство по ex.

Hosted by uCoz