Руководство по VIM

Первые шаги в Vim

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ VIM — Брам Мооленаар

Первые шаги в Vim

В этой главе даются минимальные знания, необходимые для редактирования файла в Vim. Изучив её вы сможете более или менее пользоваться редактором, пусть даже и не используя всех возможностей. Уделите некоторое время изучению этих команд, они формируют основу для дальнейшего изучения редактора.

02.1    Первый запуск Vim
02.2    Вставка текста
02.3    Перемещение
02.4    Удаление символов
02.5    Отмена операции и повторное выполнение
02.6    Другие команды редактора
02.7    Выход из редактора
02.8    Получение справки

Следующая глава: Навигация по документу
Предыдущая глава: О документации
Содержание: Руководство пользователя Vim


02.1 Первый запуск Vim

Для запуска Vim введите команду:

    gvim file.txt

В UNIX команду можно набирать прямо в оболочке. Если вы работаете в Microsoft Windows, то откройте окно MS-DOS и введите команду в нём.
В любом случае, Vim начнёт редактировать файл file.txt. Поскольку это новый файл, то вы увидите перед собой чистое окно. Вот как выглядит ваш экран:

    +--------------------------------------------------------+
|# |
|~ |
|~ |
|~ |
|~ |
|"file.txt" [Новый файл] |
+--------------------------------------------------------+
('#" показывает положение курсора.)

Строки, начинающиеся с тильды (~) отмечают строки, которых на самом деле нет в файле. Другими словами, если Vim показал на экране все строки файла, то остаток экрана заполняется строками, начинающимися с тильды. Внизу экрана вы видите сообщение, указывающее на то, что файл называется file.txt и что вы создаёте новый файл. Это временное сообщение, которое будет переписано последующими сообщениями на том же месте экрана.

КОМАНДА VIM

Команда gvim заставляет редактор открыть для редактирования новое окно.
Если вы используете команду:

vim file.txt

то редактирование будет происходить внутри существующего окна. Другими словами, если вы запускаете редактор из xterm, то редактор будет использовать существующее окно xterm. Если вы используете окно командной строки MS-DOS в Microsoft Windows, то редактирование будет происходить внутри этого окна. Текст в окне будет выглядеть одинаково для обоих версий, но у gvim есть несколько дополнительных особенностей, например меню. Подробнее об этом рассказывается дальше.


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

Vim является режимным редактором. Это значит, что поведение редактора зависит от того, в каком режиме вы находитесь в данный момент. Два основных режима называются Обычный режим и режим Вставки. В Обычном режиме все символы, которые вы набираете, являются командами. В режиме Вставки вы набираете текст.

Поскольку вы только что запустили Vim, то вы находитесь в Обычном режиме. Для того, чтобы перейти в режим Вставки, наберите команду «i» (i от Insert,
Вставка). После этого вы сможете вводить текст, который будет вставляться в файл. Не волнуйтесь, если вы будете допускать ошибки, их можно исправить позднее. Например, попробуйте ввести этот фрагмент из романа «Понедельник начинается в субботу» братьев Стругацких:

iСтранный это был отдел. Лозунг у них был такой: 
"Познание бесконечности требует бесконечного времени".

После набора слова «такой:» нажмите <Enter> для перевода строки. После окончания набора нажмите кнопку <Esc> для завершения режима Вставки и возврата в Обычный режим. Теперь у вас в окне Vim есть две строки текста:

    +--------------------------------------------------------+
|Странный это был отдел. Лозунг у них был такой: |
|"Познание бесконечности требует бесконечного времени". |
|~ |
|~ |
| |
+--------------------------------------------------------+
КАКОЙ СЕЙЧАС РЕЖИМ?

Чтобы видеть в каком режиме вы сейчас находитесь, наберите команду:

:set showmode

Вы заметите, что при наборе двоеточия Vim перемещает курсор в последнюю строку экрана. В этой строке осуществляется ввод команд, начинающихся с двоеточия. Завершите ввод команды нажатием <Enter> (Все команды, начинающиеся с двоеточия, заканчиваются вводом <Enter>).
Теперь, если вы наберёте команду «i«, то Vim покажет внизу экрана текст — ВСТАВКА —. Это значит, что вы сейчас находитесь в режиме Вставки.

    +--------------------------------------------------------+
|Странный это был отдел. Лозунг у них был такой: |
|"Познание бесконечности требует бесконечного времени". |
|~ |
|~ |
|-- ВСТАВКА -- |
+--------------------------------------------------------+

Если нажать на <Esc> для возврата в Обычный режим, то последняя строка экрана очистится.

ЕСЛИ ВОЗНИКЛИ ПРОБЛЕМЫ

Одна из самых главных проблем, преследующих новичков в Vim, заключается в том, что они путают режимы, забывают в каком режиме сейчас находятся, или случайно вводят команду, которая вызывает переход к другому режиму. Для того, чтобы вернуться в Обычный режим, независимо от того, в каком режиме вы находитесь, нажмите на кнопку <Esc>, иногда её придется нажать дважды. Если Vim отвечает звуковым сигналом, то вы уже перешли в Обычный режим.


02.3 Перемещение

После возвращения в Обычный режим, вы можете перемещаться по документу, используя следующие кнопки:

hвлево
jвниз
kвверх
lвправо                                                              

Поначалу может показаться, что эти команды выбраны случайно. Развеlиспользуется где-нибудь для перемещения вправо? Однако, для такого выбора есть очень веская причина: перемещение курсора это одна из самых частых операций, выполняемых в редакторе, а эти кнопки находятся под кистью правой руки. Другими словами, эти кнопки находятся там, где их можно набрать быстрее всего (особенно если вы печатаете всеми пальцами).

Замечание: Курсор можно также перемещать при помощи кнопок со стрелками. Однако, так вы сильно замедляете редактирование, поскольку для нажатия кнопки со стрелками вам требуется перенести руку от клавиш с буквами к клавишам со стрелками. Поскольку эту операцию приходится проводить сотни раз в час, то используя буквы можно сэкономить значительное количество времени.
Также имейте в виду, что на некоторых клавиатурах отсутствуют кнопки со стрелками, либо они размещены в необычных местах; поэтому, знание о том, как пользоваться кнопкамиhjklможет помочь в таких ситуациях.

Запомнить эти команды очень просто:hнаходится слева,lсправа,jпоказывает вниз. Представьте себе такую картинку:

      k
h l
j

Самый простой способ приучить себя к этим командам это начать их использовать. Воспользуйтесь командой «i» для вставки дополнительного текста. Затем используйте кнопкиhjklдля перемещения и вставьте где-нибудь еще одно слово. Не забывайте нажимать <Esc> для возврата в Обычный режим. Учебник по Vim также помогает запомнить эти команды на практике.

Для японских пользователей Хироси Иватани предлагает пользоваться такой схемой:

                    Komsomolsk
^
|
Huan Ho <--- ---> Los Angeles
(Yellow River) |
v
Java (остров, а не язык программирования)

02.4 Удаление символов

Для удаления символа, подведите к нему курсор и нажмите «x«. (Раньше, во времена пишущих машинок, текст удалялся путём набора xxxx над текстом.)
Например, переместите курсор к началу первой строки нажмите xxxxxxxxx (девять раз x), чтобы удалить слово «Странный «. Результат должен выглядеть так:

    +--------------------------------------------------------+
|это был отдел. Лозунг у них был такой: |
|"Познание бесконечности требует бесконечного времени". |
|~ |
|~ |
| |
+--------------------------------------------------------+

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

iНеобычный <Esc>

При этом вы переходите в режим Вставки (i), вставляете слово «Необычный», и затем выходите из режима Вставки (<Esc>). В результате получается следующее:

    +--------------------------------------------------------+
|Необычный это был отдел. Лозунг у них был такой: |
|"Познание бесконечности требует бесконечного времени". |
|~ |
|~ |
| |
+--------------------------------------------------------+
УДАЛЕНИЕ СТРОКИ

Для удаления целой строки используйте команду «dd». Последующие строки переместятся вверх, заполняя образовавшееся пространство:

    +--------------------------------------------------------+
|"Познание бесконечности требует бесконечного времени". |
|~ |
|~ |
|~ |
| |
+--------------------------------------------------------+
УДАЛЕНИЕ ПЕРЕНОСА СТРОКИ

В редакторе Vim можно соединить две строки вместе, удаляя символ переноса строки между ними. Это делается командой «J».

Возьмём две строки:

Познание бесконечности ~
требует ~

Подведите курсор к первой строке и нажмите «J»:

Познание бесконечности требует ~

02.5 Отмена операции и повторное выполнение

Предположим, что вы удалили слишком много текста. Вы можете набрать его снова, но существует гораздо более простой способ. Команда «u» (undo, отмена) отменяет последнюю операцию редактирования. Посмотрите на такой пример: после использования «dd» для удаления первой строки, «u» возвращает её назад.

Вот еще один пример: Подведите курсор к «Н» в первой строке:

Необычный это был отдел. Лозунг у них был такой: ~

Теперь наберите xxxxxxxxx чтобы удалить «Необычный». Результат выглядит так:

это был отдел. Лозунг у них был такой: ~

Наберите «u» для отмены последнего удаления. Это было удаление буквы «й», которая теперь будет восстановлена:

й это был отдел. Лозунг у них был такой: ~

Следующая команда u восстанавливает предыдущий удалённый символ:

ый это был отдел. Лозунг у них был такой: ~

Следующая команда u восстанавливает н, и т.д.:

ный это был отдел. Лозунг у них был такой: ~
чный это был отдел. Лозунг у них был такой: ~
ычный это был отдел. Лозунг у них был такой: ~
бычный это был отдел. Лозунг у них был такой: ~
обычный это был отдел. Лозунг у них был такой: ~
еобычный это был отдел. Лозунг у них был такой: ~
Необычный это был отдел. Лозунг у них был такой: ~

Замечание: Если вы нажмёте «u» дважды и, в результате, только что восстановленный текст будет вновь удалён, то это значит, что ваш Vim работает в совместимом с Vi режиме. Для исправления прочитайте здесь. В тексте руководства предполагается, что вы работаете с командами так, как это принято в Vim. Вы можете предпочесть старый проверенный Vi, но тогда в действительности будут наблюдаться расхождения с текстом руководства.

ПОВТОРНОЕ ВЫПОЛНЕНИЕ КОМАНДЫ (ОТМЕНА ОТМЕНЫ)

Если вы отмените слишком много команд, то можно нажать CTRL-R (redo, выполнить повторно) для возврата предыдущей команды. Другими словами, это отменяет команду отмены. Для демонстрации, нажмите CTRL-R два раза. Символы «Не» исчезают:

обычный это был отдел. Лозунг у них был такой: ~

Также существует специальная разновидность команды отмены, «U» (отменить для строки). Эта команда отменяет все изменения на последней строке, над которой работали. Нажатие этой команды дважды отменяет предшествующую команду «U».

    Необычный это был отдел. ~
xxxx Удалить это
Необычный был отдел.~
xxxxxx Удалить отдел.
Необычный был ~
Восстановить строку при помощи "U"
Необычный это был отдел. ~
Отменить "U" при помощи "u"
Необычный был ~

Команда «U» сама по себе является изменением, поэтому может быть отменена командой «u» и восстановлена командой CTRL-R. Всё это может показаться немного запутанным, но не стоит волноваться: «u» и CTRL-R будут работать во всех ситуациях.


02.6 Другие команды редактора

В Vim имеется большое количество команд для изменения текста. См. Вставка текста и ниже.

Вот наиболее часто используемые операции.

ДОБАВЛЕНИЕ

Команда «i» вставляет символ перед символом под курсором. Это работает прекрасно, но что если вам захочется добавить текст к концу строки? Для этого вам требуется вставить текст после курсора. Это делается при помощи команды «a» (append, добавить).

Например, для изменения строки

"Познание бесконечности требует бесконечного времени". ~

в

"Познание бесконечности требует бесконечного времени"!!! ~

подведите курсор к точке в конце строки. Затем нажмите «x», чтобы стереть точку. Теперь курсор находится на «. Наберите:

a!!!<Esc>

для добавления трёх восклицательных знаков после «:

"Познание бесконечности требует бесконечного времени"!!! ~    
ОТКРЫТЬ НОВУЮ СТРОКУ

Команда «o» создаёт новую пустую строку под курсором и переводит Vim в режим Вставки. Теперь вы можете набирать текст в новой строке.

Предположим, курсор находится где-либо в первой строке:

Необычный это был отдел. ~
"Познание бесконечности требует бесконечного времени"!!! ~

Если воспользоваться командой «o» и набрать новый текст:

oЛозунг у них был такой:<Esc>

то результатом будет:

Необычный это был отдел. ~
Лозунг у них был такой: ~
"Познание бесконечности требует бесконечного времени"!!! ~

Команда «O» (в верхнем регистре) открывает строку над курсором.

ИСПОЛЬЗОВАНИЕ ЧИСЛА

Предположим, что вы хотите переместиться на девять строк вверх. Вы можете набрать для этой цели «kkkkkkkkk» или ввести команду «9k». Очень многие команды можно предварять числом. Например, раннее в этой главе для добавления трёх восклицательных знаков к концу строки вы вводили «a!!!<Esc>». Того же результата можно было бы достичь командой «3a!<Esc>». Число 3 указывает последующей команде, что она должна быть выполнена трижды. Аналогично, для удаления трёх символов можно ввести «3x». Число всегда предшествует команде, к которой относится.


02.7 Выход из редактора

Для выхода пользуйтесь командой «ZZ». Эта команда записывает файл и выходит из программы.

Замечание: В отличие от многих других редакторов, Vim не создаёт резервных копий файла автоматически. Если вы набрали «ZZ», то ваши изменения сохраняются и отменить их уже нельзя. Но редактор можно настроить так, чтобы он создавал резервные копии, см. Резервные копии файлов.

ВЫХОД БЕЗ СОХРАНЕНИЯ ИЗМЕНЕНИЙ

Иногда вы вдруг понимаете, что лучше начать всё сначала и не сохранять внесённые изменения. В Vim есть команда для выхода без сохранения изменений. Это:

:q!

Не забудьте нажать <Enter> для завершения команды.

Для тех, кого интересуют подробности, отметим, что эта команда состоит из трёх частей. Двоеточие (:) переводит редактор в режим командной строки; команда q совершает выход из программы, а добавление восклицательного знака (!) заставляет редактор обойти проверку наличия изменений в файле.

Добавление восклицательного знака требуется, поскольку Vim не любит выбрасывать сделанные изменения. Если вы просто наберёте «:q», то Vim покажет сообщение об ошибке и откажется прекращать работу:

E37: Изменения не сохранены (добавьте !, чтобы обойти проверку) ~

Фактически, добавляя восклицательный знак, вы как бы говорите Vim, «Я знаю, что это может показаться глупым, но я уже большой мальчик и сам знаю, что надо делать».

Если вы желаете продолжить редактирование с Vim, то команда «:e!» поможет прочитать уже сохранённую версию файла.


02.8 Получение справки

В файлах справки Vim можно найти всё, что требуется для работы с редактором. Не бойтесь спрашивать!

Для получения общей справки пользуйтесь командой:

:help

Вы также можете пользоваться первой функциональной кнопкой <F1>. Если на вашей клавиатуре есть кнопка <Help>, то она, вероятно, тоже будет работать.

Если вы не укажете темы, то «:help» откроет общее окно справки. Создатели Vim поступили довольно мудро (или просто поленились?): окно справки выглядит как обычное окно внутри редактора. Для навигации по справке можно использовать все обычные команды Vim. Например, h, j, k иlпозволяют перемещаться влево, вниз, вверх и вправо.

Чтобы выйти из окна справки, используйте ту же команду, которая осуществляет выход из редактора: «ZZ». В этом случае будет закрыто только окно
справки, без выхода из редактора.

Знакомясь с текстом справки вы заметите, что некоторые фрагменты текста заключены в |вертикальных_линиях|. Это обозначение гиперссылки. Если вы поместите курсор где-либо между вертикальными линиями и нажмете CTRL-] (команда прыжка к метке), то справочная система перенесёт вас к требуемой странице. (По причинам, которые здесь не обсуждаются, термин, который используется в Vim для гиперссылки — метка (tag). Таким образом, CTRL-] осуществляет прыжок к метке, обозначенной словом, находящимся под курсором.

После нескольких прыжков вы можете пожелать вернуться назад. CTRL-T (предыдущая метка) вернёт вас к предшествующей позиции, также можно
пользоваться командой CTRL-O.

Наверху экрана справки есть запись вроде *help.txt*. Имя между символами «*» используется справочной системой для определения меток (пункта назначения гиперссылки).

Подробно о метках рассказывается в 29.1Использование меток.

Для получения справки о конкретных вещах, используйте команду

:help {subject}

Например, для помощи о команде «x», введите

:help x

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

:help deleting

или

:help удаление

Для получения полного списка команд Vim, используйте команду:

:help index

или

:help список

Если вам требуется помощь о команде с управляющим символом (например, CTRL-A), то вам потребуется набрать её с приставкой «CTRL-«.

:help CTRL-A

Редактор Vim имеет несколько режимов. По умолчанию, система справки показывает команды Обычного режима. Например, приведённая ниже команда показывает справку для команды CTRL-H Обычного режима:

:help CTRL-H

Вы также можете получить справку по командам других режимов, воспользовавшись приставкой режима. Если вам требуется справка для команды в режиме вставки, то используйте приставку «i_». Например, справку для команды CTRL-H в режиме Вставки можно получить по команде:

:help i_CTRL-H

При запуске Vim можно использовать несколько аргументов командной строки. Все аргументы начинаются со знака минус (-). Например, чтобы получить справку о том, что делает аргумент -t, наберите

:help -t

В редакторе Vim имеется ряд опций, позволяющих вам настроить редактор под собственные нужды. Если вам требуется справка по какой-либо опции, то необходимо указывать опцию в одиночных кавычках. Например, чтобы выяснить что делает опция ‘number’, используйте команду

:help 'number'

Таблица, в которой приводятся все возможные приставки находится здесь.

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

:help i_<Up>

Если вы увидите сообщение об ошибке, смысл которого вам не понятен, например:

E37: Изменения не сохранены (добавьте !, чтобы обойти проверку) ~

то для получения справки можно использовать номер ошибки:

:help E37

Следующая глава: Навигация по документу
Авторские права: см. Авторские права