Знакомство с vi - метод шпаргалки

Это руководство покажет, как использовать редактор vi. Используя ускоренный метод шпаргалки в этом руководстве, мы постараемся сделать вас профессиональным пользователем vi, не потратив много времени. Вы быстро научитесь, как перемещать и редактировать текст, использовать режим вставки, копировать и вставлять текст, и использовать важные vim-расширения, такие как визуальный режим и многооконное редактирование.

Даниэль Роббинс, президент/исполнительный директор, Gentoo Technologies, Inc.

Даниэль Роббинс (Daniel Robbins) проживает в Албукерке, Нью Мехико. Он является президентом и исполнительным директором корпорации Gentoo Technologies, а также главным архитектором Проекта Gentoo, автором нескольких книг, выпущенных МакМилланом: Caldera OpenLinux в действии, SuSE Linux в действии и Samba в действии. Даниэль был в некотором роде связан с компьютерами со второго класса, когда он подвергся действию языка программирования Logo, а заодно и потенциально опасной дозы Pac Man. Это, возможно, объясняет, почему он работал главным художником по графике в издательстве SONY (SONY Electronic Publishing/Psygnosis). Даниэль любит проводить время со своей женой, Мэри, и своим маленьким ребенком - дочерью Хадассой. Вы можете связаться с ним по электронной почте: drobbins@gentoo.org.



18.06.2007

Перед началом работы

Об этом руководстве

vi-редактор, по сути, текстовый редактор вUNIX® и Linux®. Он существует почти для всех систем и доступен для Windows®, DOS, Macintosh, OS/2, SGI и многих других платформах. Если вы еще не знаете vi или вам еще неудобно его использовать, то вы должны изучить это руководство и добиться больших результатов с помощью самой популярной и мощной Linux/UNIX визуальной программы-редактора.

Цели

Главная цель - помочь вам быстро изучить vi. Трудность для быстрого изучения заключается в том, что в vi есть много команд. Чтобы эффективно использовать vi, вам необходимо запомнить довольно много команд. Это может занять много времени, и одна из целей этого руководства - сократить ваше время на их запоминание. Таким образом, с самого начала я поставил себе задачу: как я смогу помочь вам в запоминании такого количества команд за небольшой промежуток времени?

Для решения этой задачи на протяжении всего руководства мы собираемся постепенно создавать шпаргалку. Эта шпаргалка будет содержать все важные команды vi. После того как вы закончите изучать это руководство, вы сможете использовать шпаргалку, если забудете какую-то команду. Со временем, когда вы запомните команды, вы постепенно научитесь обходиться без нее.

Предварительные требования

Нет никаких предварительных требований для этого руководства. Мы используем несколько методов для того, чтобы вам помочь. Во-первых, как вы и предполагали, я собираюсь описывать, как конкретные команды работают. Затем я попрошу вас попытаться использовать эти команды в vi (для приобретения практических навыков) и затем мы перепишем эти команды в шпаргалку. Если вы хотите изучать vi быстро, важно, чтобы вы выполнили все эти шаги. Использование команды в vi и переписывание ее в вашу шпаргалку будет способствовать запоминанию команды.

Системные требования

Есть много версий vi, и я собираюсь показать вам, как использовать версию vi, которая называется vim. vim - очень популярна и имеет массу расширений, которые делают vi привлекательнее (если я демонстрирую команду, присущую vim, я это обозначаю). Чтобы установить vim, посмотрите раздел Ресурсы в конце этого руководства для ссылки на домашнюю страницу vim. vim - текстовый редактор, который запускается в режиме команд или терминальной сессии. Рисунок 1 показывает скриншот vim с XML-кодом данного руководства на английском языке, открытого в режиме команд.

Рисунок 1. Запуск vim
Скриншот vim

Кроме усовершенствованной командной строки vi, vim также содержит хороший GUI редактор, который называется gvim. Рисунок 2 показывает скриншот gvim с тем же XML-кодом, который вы видели ранее.

Рисунок 2. Запуск gvim
Скриншот gvim

Если вы новичок в vi, попытайтесь запустить gvim на своей машине. Использование vi из GUI облегчит понимание некоторых вещей.


Навигация в vi

Загружаем файл

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

$ vi myfile.txt

Если вы установили vim, напечатайте "vim myfile.txt". Если вы используете gvim, напечатайте "gvim myfile.txt". myfile.txt - это имя текстового файла в вашей системе.

После того как загрузится vi, вы увидите часть текстового файла, который вы загрузили, на вашем экране. Поздравляем - вы в vi! vi отличается от многих других редакторов тем, что когда он загружается, он входит в определенный режим, называющийся "режим команд". Это означает, что если вы нажмете "l" на клавиатуре вместо того, чтобы просто вставить "l" в файл в текущей позиции курсора, курсор сдвинется на один символ вправо. В режиме команд символы на вашей клавиатуре используются для того, чтобы послать команды vi, а не для того, чтобы вставить буквенные символы в текст. Один из главных типов команд - команды перемещения, давайте рассмотрим некоторые из них.

Перемещение в vi

В режиме команд вы можете использовать клавиши h,j,k и l для перемещения курсора влево, вниз, вверх и вправо. Если вы используете одну из последних версий vi, вы можете также использовать для перемещений клавиши стрелок. Клавиши h,j,k и l удобны, когда-нибудь вы к ним привыкнете и сможете передвигаться по файлу, не убирая руки с привычных клавиш на клавиатуре. Попытайтесь использовать h,j,k и l (и клавиши стрелок) для передвижения в текстовом файле. Используйте h пока не попадете в начало строки. Запомните, что если вы находитесь в 1-й позиции строки, vi не позволит вам перейти в конец предыдущей строки, нажав клавишу h . Аналогично, вы не сможете перепрыгнуть на следующую строчку, нажимая l в конце строки.

В vi есть специальные горячие клавиши для быстрого перемещения в конец или начало текущей строки. Вы можете нажать 0 (ноль), чтобы возвратиться к первому символу строки и $ - к последнему. Нажмите их и увидите. Так как в vi существует столько различных удобных команд для перемещения, он является в некотором смысле "пейджером". Использование vi как пейджер также поможет вам выучить все команды передвижения очень быстро.

Вы можете также использовать ^F (Ctrl-F) и ^B (Ctrl-B) для перемещения вверх и вниз на одну страницу. Современные версии vi (например, vim) также позволят вам использовать для этой цели клавиши PGUP и PGDOWN.

Перемещение по словам

vi также позволит вам передвигаться влево или вправо по словам. Чтобы переместиться к первому символу следующего слова, нажмите w. Чтобы переместиться к последнему символу следующего слова, нажмите e. Чтобы переместиться к первому символу предыдущего слова, нажмите b. Протестируйте эти команды.

После того, как вы поиграли с командами по перемещению по словам, вы, возможно, заметили, что vi рассматривает такие слова, как, например " foo-bar-oni", как 5 отдельных слов! Это происходит потому, что по умолчанию vi определяет границы слов пробелами или знаками пунктуации. Foo-bar-oni, таким образом, рассматривается как 5 слов: "foo", "-", "bar", "-" и "oni".

Иногда это то, что вам нужно, а иногда - совсем не то. К счастью, vi понимает также концепцию " длинного слова ". vi определяет границы длинных слов только пробелами или символами перехода на новую строку. Это означает, что, несмотря на то, что foo-bar-oni и рассматривается редактором vi как 5 vi-слов, считается, что это одно длинное слово.

Чтобы перескочить к следующему или предыдущему длинному слову, вы можете использовать для команд перемещения по словам большие буквы. Используйте W, чтобы переместиться к первому символу следующего длинного слова, E - для последнего символа следующего длинного слова и B - для первого символа предыдущего длинного слова. Попробуйте эти команды и сравните оба типа команд то тех пор, пока вы не поймете их разницу.

Перемещение на большее расстояние

Давайте изучим еще несколько команд, прежде чем начнем их заносить в шпаргалку. Вы можете использовать символы ( и ) для перемещения в начало предыдущего или следующего предложения. Кроме того, вы можете нажать { или }, чтобы переместиться в начало текущего параграфа и в начало следующего. Проверьте их.

Выход

Мы рассмотрели основные команды перемещения, но есть еще несколько команд, которые вам необходимо знать. Напечатав :q, вы выйдите из vi. Если это не работает, возможно, вы случайно изменили каким-нибудь образом файл. Чтобы выйти из vi, не сохраняя какие-либо изменения, напечатайте :q!. Теперь вы находитесь в командной консоли.

В vi любая команда, которая начинается с ":", как говорят, является командой "ex-режима". Она называется так потому, что в vi встроен невизуальный редактор "ex-режима". Он может быть использован так же, как и sed, для построчного выполнения операций редактирования. Кроме того, его так же можно использовать для выхода, как вы только что видели. Если вы нажмете клавишу Q во время действия в режиме команд, вы переместитесь в ex-режим. Когда это произойдет, появится подсказка :, а нажав Enter, вы прокрутит весь экран вверх. Чтобы вернуться в обычный vi-режим, просто напечатайте vi и нажмите Enter.

Начнем заполнять шпаргалку

Мы рассмотрели много команд, и сейчас наступило время записать их в нашу шпаргалку. Для шпаргалки вам потребуется лист 8.5x11 дюймов или формата A4 (мы собираемся записывать много информации в этот лист!) Здесь есть рисунок моей шпаргалки после того, как я переписал все команды, которые мы уже рассмотрели. Попытайтесь последовать моему примеру, если возможно, чтобы мы могли поместить все на один лист.

Шпаргалка 1


Редактирование и сохранение

Перемещение

Давайте продолжим наше быстрое изучение командных клавиш. В режиме команд вы можете переместиться в конкретную строку, напечатав <номер строки>G. Чтобы перескочить к первой строке файла, напечатайте 1G. Обратите внимание на то, что в данном случае G - заглавная буква.

Если вы хотите перескочить к следующему случаю использования определенного текстового шаблона, напечатайте /regexp и нажмите Enter. Замените regexp выражением, которое вы ищите. Если вы не знаете, как использовать стандартные выражения, не волнуйтесь, - напечатав /foo, вы переместитесь к следующему случаю использования foo. Единственная вещь, которую нужно остерегаться, - ссылка на символы ^, ., $ или \. Перед этими символами стоит черта (backslash) \. К примеру, /foo\.gif найдет следующее использование "foo.gif".

Чтобы продолжить поиск вперед, нажмите n. Чтобы продолжить поиск назад, нажмите N. Как всегда, опробуйте эти команды в вашем собственном vi-редакторе.

Сохранение

Мы рассмотрели, как вы можете использовать ex-команду :q, чтобы выйти из vi. Если вы хотите сохранить все изменения, нажмите :w. Если вы хотите сохранить все ваши изменения в другом файле, нажмите :w имя_файла.txt. Если вы хотите сохраниться и выйти, нажмите :x или :wq.

В vim (и других усовершенствованных редакторах vi, например, elvis) вы можете держать открытыми несколько буферов одновременно. Чтобы открыть файл в новом окне, нажмите :sp имя_файла.txt. имя_файла.txt откроется для редактирования в новом отдельном окне. Чтобы переключиться между окнами, нажмите ^w^w (Ctrl+w дважды). Любые команды :q, :q!, :w и :x, которые вы вводите, применяются для текущего активного окна.

Простое редактирование

Теперь пришло время начать изучать некоторые простые команды для редактирования. Команды, которые мы рассмотрим здесь, называются "простыми", так как они будут выполняться в режиме команд. Более сложные команды для редактирования автоматически переведут вас в режим правки - режим, который поможет вам ввести буквенные данные с клавиатуры. Мы рассмотрим некоторые из них.

Теперь попытайтесь переместиться через несколько символов и нажать несколько раз на x. Вы увидите, что x удаляет текущий символ под курсором. Теперь перейдите к середине параграфа где-нибудь в вашем текстовом файле и нажмите J (заглавная буква). Вы увидите, что команда J служит для того, чтобы присоединить предыдущую строку к концу текущей строки. Теперь переместитесь на несколько символов и нажмите r и затем напечатайте новый символ; вы увидите, что изначальный символ был замещен новым. Наконец, переместитесь в любую строку файла и нажмите dd. Вы увидите, что dd удаляет текущую строку текста.

Повторение и удаление

Вы можете повторить любую команду редактирования, нажав клавишу ".". Ради эксперимента удостоверьтесь, что dd… удалит 4 линии, а J… добавит 4 линии. Как обычно, в vi есть другие удобные горячие клавиши.

Чтобы удалить текст, вы можете также использовать команду d в сочетании с любой командой перемещения. К примеру, dw удаляет символы с текущей позиции до начала следующего слова; d) удаляет с начала и до конца следующее предложение, а d} удалит оставшуюся часть параграфа. Поэкспериментируйте с командой d и другими командами редактирования до тех пор, пока вы уверенно не начнете пользоваться ими.

Отмена команды

Теперь, вдоволь поэкспериментировав с командами удаления, будет полезно изучить, как отменить любые изменения. Нажав u, изначальная версия vi позволит вам отменить только последнее сделанное изменение. Однако, последние версии vi, такие как vim, позволяют вам несколько раз нажимать на u и продолжать отменять изменения, которые вы сделали в вашем файле. Попытайтесь комбинировать некоторые команды d и u вместе.

Обновляем нашу шпаргалку

Теперь настало время обновить нашу шпаргалку. После добавления всех команд, которые мы уже здесь изучили, ваша шпаргалка будет выглядеть вот так:

Шпаргалка 2


Режим правки

Основы режима правки

До сих пор мы рассматривали, как перемещаться по vi, преобразовывать файл и выполнять основные операции редактирования. Однако я даже не показал вам, как просто писать текст в свободной форме! Этого я не сделал специально, так как режим правки в vi несколько сложен на первых порах. Однако после того как вы привыкните к режиму правки, его сложность (и гибкость) станут преимуществом.

В режиме правки vi вы можете ввести текст прямо на экран так же, как можете это сделать в любых других визуальных редакторах. Когда вы отредактировали все, что хотели, вы можете нажать Esc для возврата в режим команд. Вы можете перейти в режим правки, нажав i или a. Если вы нажмете i, ваш текст вставится перед текущим символом, если вы нажмете а, ваш текст прибавится после текущего символа. Запомните, после того как вы ввели текст, нажатие Esc вернет вас в режим команд.

Преимущества режима правки

Используйте команды a и i. Введите либо a, либо i, напечатайте какой-нибудь текст и затем нажмите Esc для возврата в режим команд. После нажатия a или i, попробуйте нажать Enter и посмотрите, что происходит. Используйте клавиши стрелок и клавишу delete, чтобы понять, как работает режим правки. Используя клавиши стрелок и клавишу delete, вы можете выполнить важнейшие команды редактирования без постоянного перехода в режим правки и обратно.

Опции режима правки

Сейчас мы рассмотрим другие удобные пути перехода в режим правки. Нажмите A (заглавная буква) для того, чтобы начать вводить текст в конце текущей строки, независимо от позиции в строке, в которой вы в данный момент находитесь. Также нажмите I (заглавная буква), чтобы начать вставлять текст в начало текущей строки. Нажмите o, чтобы создать новую пустую строку снизу от текущей строки, в которой вы можете вводить текст, и нажмите O (заглавная буква), чтобы создать новую строку сверху от текущей. Чтобы заменить целую текущую строку новой строкой, напечатайте cc. Чтобы заменить все, начиная с текущей позиции и заканчивая последним символом в строке, напечатайте c$. Чтобы заменить все, начиная первым символом в строке и заканчивая текущим, напечатайте c0.

В добавление к вышесказанным командам, заметим, что каждая из команд переведет вас в режим правки. После работы с текстом, нажмите Esc, чтобы вернуться в режим команд.

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

Мы уже немного использовали команду c (изменить), когда печатали cc, c0 и c$. cc - специальная команда изменения, подобная dd. Команды c0 и c$ - примеры использования команд изменения в комбинации с командами перемещения. В этом виде c работает подобно d за исключением того, что она переводит вас в режим правки, поэтому вы можете ввести любой текст вместо удаленных символов. Попытайтесь комбинировать несколько команд передвижения и команду c и протестируйте их в вашем файле (к примеру: cW, ce, c( .)

Сложные команды

vi становится действительно мощным средством, когда вы начинаете использовать сложные ("combo") команды, например d{ и cw. В добавление к этим командам, вы также можете комбинировать число с любой командой перемещения, например 3w, которая служит для перемещения на три слова вправо. Вот еще несколько примеров "combo"-команд передвижения: 12b, 4j.

Кроме того, что vi позволяет комбинации "число-команда", он также позволяет соединение d или c с числом и командой передвижения. Так, к примеру, d3w удалит следующие три слова, d2j удалит текущую и две новых линии и.т.п. Проверьте несколько сочетаний, чтобы понять, насколько мощное и точное средство vi, и чтобы уверенно пользоваться им. Так как сочетание этих команд разнообразно, вы теперь можете редактировать файлы чрезвычайно быстро.

Обновим шпаргалку еще раз

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

Шпаргалка 3


Возможности производительности

Чем дальше, тем лучше

До сих пор мы рассматривали, как передвигаться, сохранять и выйти, выполнять простые редактирование и удаление, используя режим правки. Со списком команд, перечисленных в данный момент в шпаргалке, вы можете использовать vi для выполнения практически любого задания.

Однако vi также содержит и более мощные команды. В этом разделе я научу вас вырезать, копировать и вставлять, осуществлять поиск и замену, а также использовать методы автоматического отступа. Эти команды помогут сделать работу с vi лучше и продуктивнее.

Визуальный режим

Лучший способ вырезать и вставить - использовать визуальный режим, - специальный режим, который добавлен к последним версиям vi, таким как vim и elvis. Считайте, что визуальный режим - это режим подсветки текста. Когда текст подсвечен, его легко можно копировать и удалить, а затем вставить.

Нажав v, вы переходите в визуальный режим. Вы увидите слово viSUAL внизу слева вашего редактора, как показано на рисунке 3. Затем, переместив курсор, используя команды передвижения (в основном, клавиши стрелок), вы сможете подсветить область текста. Если ваш менеджер Window понимает нажатие на клавиши мышки, вы можете также подсветить текст, удерживая левой кнопкой мышки определенную часть текста, которую необходимо подсветить.

Рисунок 3. Использование визуального режима vi
Использование визуального режима vi

Когда текст подсвечен, вы можете вырезать или копировать его. Если вы копируете текст, нажмите y. Если вы вырезаете текст, нажмите d. Вы перейдете обратно в режим команд. Теперь перейдите к месту, где бы вы хотели вставить вырезанный или скопированный текст, и нажмите P, чтобы вставить текст после курсора или p - до курсора. Вот и все, процесс вырезания/копирования и вставки закончен! Выполните несколько таких операций, прежде чем продолжить.

Замена текста

Чтобы заменить некоторые части текста, мы используем ex-режим. Если вы хотите заменить первое выражение, которое появляется в текущей строке, напечатайте :s/regexp/replacement/ и нажмите Enter, где regexp - это выражение, которое вы хотите подобрать, а replacement - это замена строки. Чтобы заменить все соответствующие случаи употребления в текущей строке, напечатайте :s/regexp/replacement/g и нажмите Enter. Чтобы заменить все случаи в вашем файле (как раз обычно это и требуется), напечатайте :%s/regexp/replacement/g. Если вы захотите сделать общую замену, но чтобы для каждого изменения появлялось vi-напоминание, напечатайте :%s/regexp/replacement/gc и нажмите Enter.

Отступ

vi поддерживает автоматический отступ, если вы редактируете исходный код. Большинство последних версий vi (например, vim) автоматически переходит в режим автоотступа, когда вы редактируете файл исходного кода (например, .c-файл). Когда стоит автоматический отступ, вы можете использовать ^d (Ctrl + d) для перемещения на один отступ влево и ^t (Ctrl + t) - вправо. Если автоматически вы не перешли в режим автоотступа, вы можете вручную войти в него, напечатав в ex-режиме :set autoindent. Вы можете также установить размер табуляции, использовав команду :set tabstop, часто используется команда :set tabstop=4.

Окончательный вид шпаргалки

Наконец, мы достигли конца нашего учебного пособия по vi! После добавления всех сложных команд редактирования в вашу шпаргалку, она должна выглядеть вот так:

Заключение

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

Ресурсы

Научиться

Получить продукты и технологии

  • С помощью тестовых программ IBM, доступных для загурзки прямо с сайта developerWorks, постройте ваш следующий проект в Linux.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=231576
ArticleTitle=Знакомство с vi - метод шпаргалки
publish-date=06182007