Знакомство с Linux
Александр Соловьев
Оглавление
12.Использование редактора vi
Текстовый редактор, это программа, используемая для
редактирования файлов, которые содержат текст, например письма,
С-программы или системные конфигурационные файлы. Хотя в Linux
много всяких разных редакторов, единственный редактор, который вы
с гарантией найдете в любом UNIX - это vi (``visual editor''). vi
- это не самый простой в использовании редактор. Но поскольку он
так распространен в мире UNIX и в любой момент может вам
потребоваться, он заслуживает хоть какого-то описания здесь.
Выбор редактора, это дело персонального вкуса и стиля.
Многие пользователи предпочитают витиеватый и мощный Emacs -
редактор с самым большим набором возможностей, по сравнению со
всеми другими редакторами в мире UNIX. Например, Emacs имеет свой
собственный встроенный диалект языка программирования LISP и
множество расширений (одно из которых ``Eliza''- в некотором роде
программа искусственного интеллекта). Однако, поскольку Emacs со
всеми поддерживающими его файлами сравнительно велик, его нет на
многих системах. vi , наоборот, маленький и удаленький, но, увы,
более сложный в использовании. Но когда вы с ним освоитесь, вы
поймете, что он очень простой. Правда осваивать его сложно.
Этот раздел - вразумительное введение в vi . Мы не будем
обсуждать все его свойства, а только те, которые вы должны знать,
чтобы начать работать. Если вы пожелаете знать больше деталей, обратитесь
к страницам Руководства.
12.1 Концепции
При использовании vi в любое время вы можете находиться в
одном из трех режимов работы. Эти режимы известны как командный
режим, режим вставки и режим последней строки.
Когда вы начинаете работать с vi - вы в командном режиме.
Этот режим позволяет использовать определенные команды для
редактирования файлов или перехода в другие режимы. Например,
напечатав ``x '' при нахождении в командном режиме, удаляете
символ, находящийся перед курсором. Стрелки передвигают курсор по
редактируемому файлу. Большинство команд, используемых в
командном режиме, состоит из одного или двух символов.
Вставку или редактирование текста вы осуществляете в режиме
вставки. При использовании vi вы, возможно, большую часть времени
находитесь именно в этом режиме. Вы переходите в режим вставки с
помощью команды ``i '' (``insert'' - вставка) из командного
режима. В режиме вставки вы вставляете текст в документ на место,
указываемое курсором. Для завершения режима вставки и возврата в
командный режим следует нажать esc.
Режим последней строки - это специальный режим, используемый
для расширения возможностей командного режима. При вводе таких
команд они появляются в последней строке экрана. Например, если
вы напечатаете ``:'' в командном режиме, вы перейдете в режим
последней строки и сможете использовать такие команды, как ``wq ''
(записать (write) файл и выйти (quit) из vi), или ``q! '' (выйти
из vi без сохранения изменений). Режим последней строки в общем
случае используется для команд vi , которые длиннее одного
символа. В режиме последней строки вы вводите однострочные
команды и нажимаете enter для их выполнения.
В начало страницы
12.2 Начала vi
Лучший способ освоить эту концепцию, это вызвать
vi и отредактировать файл. В примере
``screens '', приводимом ниже, мы собираемся только показать
несколько строк текста, будто бы экран состоит всего из
шести строк (вместо двадцати четырех).
Вызов vi
vi <filename>
где <filename> - имя редактируемого файла.
Ну так вызовите vi , напечатав
/home/larry# vi test
для редактирования файла test . Вы увидите нечто вроде
____________________________________________________________________
|~_ |
|~ |
|~ |
|~ |
|~ |
|"test"_[New_file]__________________________________________________|
Столбец символов ``~'' говорит о том, что вы стоите на конце
файла.
В начало страницы
12.3 Вставка текста
Вы находитесь в командном режиме; для того, чтобы вставлять
текст в файл, нажмите i (что переведет вас в режим вставки) и
начинайте печатать.
____________________________________________________________________
|Now is the time for all good men to come to the aid of the party._ |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
При вставке текста вы можете напечатать столько строк,
сколько пожелаете (нажимая return после каждой строки), и
можете корректировать ошибки используя клавишу возврата
(backspace).
Для завершения режима вставки и возврата в командный режим
нажмите esc.
В командном режиме вы можете использовать клавиши со
стрелками для перемещения по файлу. Здесь, поскольку мы имеем
только одну строку текста, попытки использовать стрелки "вверх" и
"вниз" приведут лишь к тому, что vi на вас загудит.
Есть несколько способов вставки текста, отличных от
использования команды i . Например, команда a вставляет в текст,
начиная после текущего положения курсора, вместо текущей позиции
курсора. Используйте левую стрелку для перемещения
курсора между словами ``good'' и ``men''.
____________________________________________________________________
|Now is the time for all good_men to come to the aid of the party. |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Нажмите a, для начала режима вставки, напечатайте ``wo '',
а затем нажмите esc для возврата в командный режим.
____________________________________________________________________
|Now is the time for all good women to come to the aid of the party.|
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Для того, чтобы начать вставку текста в строку ниже текущей,
используйте команду ``о ''. Например, нажмите o и напечатайте
строчку или две
____________________________________________________________________
|Now is the time for all good women to come to the aid of the party.|
|Afterwards, we'll go out for pizza and beer._ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Но помните, что в любое время вы находитесь либо в командном
режиме (где команды, такие как i , a или o могут применяться) или
в режиме вставки (где вы вставляете текст, а затем с помощью
esc возвращаетесь в командный режим) или в режим последней
строки (в котором вы расширяете расширяемые команды, как это
обсуждается ниже).
В начало страницы
12.4 Удаление текста
В командном режиме команда "x " удаляет символ перед
курсором. Если вы нажмете x пять раз, вы закончите в ситуации:
____________________________________________________________________
|Now is the time for all good women to come to the aid of the party.|
|Afterwards, we'll go out for pizza and _ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Теперь нажмите a, вставьте некоторый текст, а затем
нажмите esc:
____________________________________________________________________
|Now is the time for all good women to come to the aid of the party.|
|Afterwards, we'll go out for pizza and Diet Coke._ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Вы можете удалять целые строки, набирая команду dd (т.е.
нажимая d дважды). Если ваш курсор на второй строке, и вы
напечатали dd ,
____________________________________________________________________
|Now is the time for all good women to come to the aid of the party.|
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Чтобы удалить слово, на котором находится курсор,
используйте команду dw . Поместите курсор на слово ``good'' и
напечатайте dw .
____________________________________________________________________
|Now is the time for all women to come to the aid of the party. |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
В начало страницы
12.5 Изменение текста
Вы можете заменить фрагменты текста, используя команду R .
Поместите курсор на первую букву слова ``party'', нажмите R и
напечатайте слово ``hungry''.
____________________________________________________________________
|Now is the time for all women to come to the aid of the hungry._ |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Использование R для редактирования текста очень походит на
на команды i и a , но R заменяет прежний текст вместо вставки в
него.
Команда r заменяет один символ, отмеченный курсором.
Например, переместите курсор на начало слова ``Now'' и
напечатайте r , а следом C , то вы получите:
____________________________________________________________________
|Cow is the time for all women to come to the aid of the hungry._ |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Команда ``˜ '' изменяет размер буквы, отмеченной курсором:
большую делает маленькой и наоборот. Например, если вы поместите
курсор на ``o'' в ``Cow'' и затем последовательно будете нажимать
~, вы в конечном итоге получите:
____________________________________________________________________
|COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
В начало страницы
12.6 Команды перемещения
Вы уже знаете, как использовать стрелки для перемещений по
документу. Вы также можете использовать команды h , j ,
k , и l для
перемещения курсора влево, вниз, вверх и вправо соответственно.
Это удобно, если (по каким-то причинам) ваши клавиши
со стрелками не работают как надо.
Команда w перемещает курсор на начало следующего слова; b -
перемещает на начало предыдущего слова.
Команда 0 (это ноль) передвигает курсор на начало текущей
строки, а команда $ перемещает на конец строки.
При редактировании больших файлов вы хотите перемещаться
вперед и назад сразу на размер экрана. Нажатием ctrl-F курсор
перемещается на экран вперед, с помощью ctrl-B - на
экран назад.
Для того, чтобы переместить курсор в конец файла,
напечатайте G . Можно переместиться также на любую строку,
напечатав команду 10G вы переместите курсор на десятую строку
файла. Для того, чтобы встать на начало (на первую строку),
используйте 1G .
Вы можете сочетать команды перемещения с другими командами,
такими как удаление. Например, команда d$ удалить от
местоположения курсора до конца строки; dG удалит все от курсора
до конца файла и т.д.
В начало страницы
12.7 Сохранение файлов и выход из vi
Для выхода из
vi без внесения изменений в ранее существовавший файл используйте команду
:q! .
Когда вы напечатаете ``: '', курсор переместится на последнюю строку экрана,
поскольку вы перейдете в режим последней строки.
____________________________________________________________________
|COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|~ |
|~ |
|~ |
|~ |
|~ |
|:__________________________________________________________________|
В режиме последней строки могут выполняться некоторые
расширенные команды. Одна из них - q! , которая позволяет выйти из
vi без записи. Команда :wq сохраняет (записывает) файл, а затем
выходит из vi . Команда ZZ (в режиме команд,
без `: '')
эквивалентна :wq . Помните, что вы должны нажать enter после
набора команды в режиме последней строки. Если хотите записать
файл без выхода из /vi , используйте просто :w .
В начало страницы
12.8 Редактирование еще одного файла
Для того, чтобы отредактировать другой файл, используйте
команду :e . Например, чтобы прекратить редактирование файла test
и перейти к редактированию файла foo , используйте команду
____________________________________________________________________
|COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|~ |
|~ |
|~ |
|~ |
|~ |
|:e foo_____________________________________________________________|
Если вы используете :e без предварительного сохранения
файла, то сначала вы получите сообщение об ошибке.
____________________________________________________________________
|No_write_since_last_change_(":edit!"_overrides)____________________|
которое просто означает, что vi не желает редактировать
другой файл, пока не будет сохранен первый. В этот момент вы
можете использовать :w , чтобы сохранить исходный файл, а затем
использовать :e или использовать команду
____________________________________________________________________
|COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|~ |
|~ |
|~ |
|~ |
|~ |
|:e! foo_____________________________________________________________|
``! '' говорит vi , что вы на самом деле имеете в виду -
редактировать новый файл без сохранения изменений, которые
делались в первом.
В начало страницы
12.9 Включение других файлов
Если вы используете команду :r , вы можете включить
содержимое другого файла в текущий файл. Например, команда
:r foo.txt
вставит содержимое файла foo.txt в данное место текста.
В начало страницы
3.12.10 Выполнение команд Shell
Вы можете также выполнять команды прямо из vi . Команда :r!
работает как :r , но вместо чтения файла она вставляет выход
данной команды в буфер, в место, где находится курсор. Например,
если вы используете команду
:r! ls -F
вы получите в результате
____________________________________________________________________
|COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|letters/ |
|misc/ |
|papers/_ |
|~ |
|~__________________________________________________________________|
Вы можете выполнить команду a , находясь в редакторе vi и
вернуться в редактор после ее завершения Напрмиер, если вы
используете команду
:! ls -F
будет выполнена команда ls -F , а результат выдан на
экран, а не вставлен в редактируемый файл. Если вы используете
команду
:shell
vi запустит shell, который позволит временно "отложить" vi и
выполнить команды. После выхода из shell (используя команду exit )
вы вернетесь в vi .
12.11 Получение помощи
vi не слишком силен в интерактивной помощи (да и большинство
UNIX-ов также), но вы всегда можете посмотреть страницы
Руководства для vi . vi - это "визуальная составляющая" редактора
ex ; это ex делает многое для поддержания режима последней строки
и командного режима в vi . Так что в дополнение к чтению
Руководства по vi посмотрите также Руководство по ex .
|