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

Vim может работать на обычном терминале, в то время как GVim может делать те же самые вещи, но с графическим интерфейсом, позволяющим использовать несколько дополнительных особенностей. Графический интерфейс (GUI) позволяет также использовать меню, панель инструментов, полосы прокрутки и другие компоненты, которым посвящается эта глава.

09.1    Компоненты графического интерфейса
09.2    Использование мыши
09.3    Системный буфер обмена
09.4    Режим выделения

Следующая глава: Внесение серьёзных изменений
Предыдущая глава: Разделение экрана
Содержание: Руководство пользователя Vim


09.1 Компоненты графического интерфейса

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

gvim file.txt
vim -g file.txt

Если эти команды не работают, то, значит, ваша версия Vim собрана без поддержки графического интерфейса.
Vim откроет окно и покажет в нём файл "file.txt". Как выглядит это окно зависит от версии Vim, но в общем случае это напоминает, насколько это возможно изобразить при помощи символов ASCII, следующую картину:

+---------------------------------------------------------------+
| file.txt + (~/dir) - VIM                            X|<- заголовок
+---------------------------------------------------------------+   окна
| Файл Редактировать Инструменты Синтаксис Буферы Окно Справка |<- меню
+---------------------------------------------------------------+
| шшш  шшш  шшш  шшш  шшш  шшш  шшш  шшш  шшш  шшш  шшш  шшш    |<- панель
| шшш  шшш  шшш  шшш  шшш  шшш  шшш  шшш  шшш  шшш  шшш  шшш    |   инструм.
+---------------------------------------------------------------+
| file text                                 | ^ |
| ~                                     | # |
| ~                                     | # |<- полоса
| ~                                     | # |   прокрутки
| ~                                     | # |
| ~                                    | # |
|                                     | V |
+---------------------------------------------------------------+

Самую большую область занимает текст файла. Файл отображается в окне так же, как и на терминале, возможно с другими цветами и шрифтами.

ЗАГОЛОВОК ОКНА

В самом верху окна находится заголовок. Заголовок отрисовывается системой, но Vim передаёт системе указание, что там необходимо отобразить имя текущего файла. Сначала в заголовке указывается само имя файла, затем ряд специальных символов и каталог, в котором находится файл. Эти специальные символы следующие:

- Файл не может быть изменён (например, файл справки)        
+ Файл был изменён
= Файл открыт только для чтения
=+ Файл открыт только для чтения, но был изменён

Если специальных символов нет, то в окне открыт обыкновенный файл без изменений.

МЕНЮ

Вы конечно же знаете, как работает меню. Меню Vim содержит обычные для меню компоненты, плюс несколько дополнительных. Побродите по меню, чтобы получить представление о том, что где находится. Например, подменю Редактировать/Общие настройки, где среди всего прочего есть такие компоненты:

Панель инструментов Включить/выключить панель инструментов
Нижняя полоса прокрутки Включить/выключить полосу прокрутки внизу экрана
Левая полоса прокрутки Включить/выключить полосу прокрутки в левой части экрана
Правая полоса прокрутки Включить/выключить полосу прокрутки в правой части экрана

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

ПАНЕЛЬ ИНСТРУМЕНТОВ

Эта панель содержит значки для наиболее часто используемых действий. Надеемся, что эти значки говорят сами за себя. Кроме того, можно получить подсказку о смысле значка, если подвести к нему мышь.

Как уже говорилось, пункт меню "Редактировать/Общие настройки/Панель инструментов" выключает отображение панели инструментов. Если вы не хотите, чтобы панель инструментов появлялась на экране, то поместите в файл vimrc такую команду:

:set guioptions-=T

чтобы убрать из опции 'guioptions' флаг 'T'. При помощи этой опции можно включать и выключать также и другие компоненты интерфейса, подробности см. в справке по этой опции.

ПОЛОСЫ ПРОКРУТКИ

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

Горизонтальную полосу прокрутки можно включить при помощи меню "Редактировать/Общие настройки/Нижняя полоса прокрутки". Полоса прокрутки внизу экрана удобна в режиме просмотра отличий diff, а также в тех случаях, когда опция 'wrap' выключена (подробнее об этом позже).

Если экран Vim разделён на окна по вертикали, то, очевидно, что только у окон в правой части экрана есть полоса прокрутки. Тем не менее, когда вы перемещаете курсор в окно слева, то полоса прокрутки начинает контролировать активное окно, то, которое слева. Возможно вам потребуется некоторое время, чтобы к этому привыкнуть.

При работе с вертикально разделёнными окнами вы также можете добавить полосу прокрутки в левой части экрана, при помощи соответствующего пункта меню, или воспользовавшись соответствующим флагом опции 'guioptions':

:set guioptions+=l

09.2 Использование мыши

Стандарты -- замечательная вещь. В Microsoft Windows вы можете выделять текст мышью стандартным способом. В X Window имеется также стандартный способ использования мыши для этой цели. К сожалению, эти стандарты не соответствуют друг другу.

Хорошая новость в том, что вы можете настраивать Vim по своему усмотрению. Мышь в вашем редакторе может работать как мышь на X Window или как мышь в Microsoft Windows. Для этого просто надо воспользоваться командой

:behave xterm

или >

:behave mswin

Поведение мыши по умолчанию в UNIX -- xterm. Поведение мыши по умолчанию в Microsoft Windows выбирается в процессе установки программы. Подробности можно прочитать в |:behave|, а здесь мы приведём самую общую информацию:

ПОВЕДЕНИЕ МЫШИ XTERM
Щелчок левой кнопки позиционирование курсора
Протяжка левой кнопкой выделение текста в Визуальном режиме
Щелчок средней кнопки вклейка текста из системного буфера
Щелчок правой кнопки расширение выделения до текущего положения курсора мыши
ПОВЕДЕНИЕ МЫШИ MSWIN
Щелчок левой кнопки позиционирование курсора
Протяжка левой кнопкой выделение текста в режиме Выделения  (см. |09.4|)
Щелчок левой кнопки с нажатым Shift расширение выделения до текущего положения курсора мыши
Щелчок средней кнопки вклейка текста из системного буфера
Щелчок правой кнопки показать всплывающее меню

Но это еще не всё! Посмотрите на нижеперечисленные опции, чтобы узнать, как можно еще настроить работу мыши:

'mouse' режимы, в которых Vim использует мышь
'mousemodel' настройка щелчков кнопками мыши
'mousetime' время между двумя щелчками мыши для двойного щелчка
'mousehide' прятать курсор мыши во время набора
'selectmode' режим (Визуальный или Выделение), в который мышь переводит редактор

09.3 Системный буфер обмена

В разделе "Использование буфера обмена" мы объяснили общие принципы использования системного буфера обмена. Следует пояснить одну деталь относительно X-windows: в этой системе на самом деле есть два места, в которых можно хранить текст для обмена между программами. В MS-Windows есть только один буфер обмена.

В X-Windows имеется так называемое "текущее выделение". Это текст, который выделен в данный момент. В Vim это область выделения в Визуальном режиме, если вы используете настройки по умолчанию. Это выделение можно вклеивать в другом приложении без дополнительных мероприятий.

Например, выберите мышью несколько предложений в этом тексте. Теперь запустите еще один gVim, без аргументов, и щелкните средней кнопкой мыши в пустом окне. Выделенный текст будет вклеен.

Текущее выделение, однако, будет оставаться в силе только до тех пор, пока не будет выбран какой-нибудь другой текст. После вклейки в другом gVim выберите в нём несколько символов. Вы увидите, что слова, которые вы перед этим выделяли в другом окне, выглядят иначе. Это происходит потому, что они больше не являются текущим выделением.

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

НАСТОЯЩИЙ БУФЕР ОБМЕНА

Теперь о другом месте для обмена текстом между программами. Чтобы избежать недоразумения, мы будем называть его "настоящий буфер обмена". Вам нужно привыкнуть, что буфером обмена часто называют как "текущее выделение", так и "настоящий буфер обмена".

Чтобы поместить текст в настоящий буфер обмена, выберите несколько разных слов в одном из запущенных gVim'ов. Воспользуйтесь меню "Редактировать/Копировать". Теперь текст помещен в настоящий буфер обмена. Некоторые приложения могут показывать содержимое буфера обмена, например KDE klipper.

Перейдите в другой запущенный gVim, поместите курсор где-нибудь в тексте и воспользуйтесь меню "Копировать/Вклеить". Теперь в окне появился текст из настоящего буфера обмена.

ИСПОЛЬЗОВАНИЕ ОБЕИХ ВОЗМОЖНОСТЕЙ

Использование "текущего выделения" и "настоящего буфера обмена" вместе может показаться немного сбивающим с толку, но при этом чрезвычайно полезно. Продемонстрируем это на примере. В одном из gVim с загруженным текстовым файлом проделайте следующие операции:

  1. Выберите два слова в Визуальном режиме.
  2. Поместите эти два слова в буфер обмена при помощи меню "Редактировать/Копировать".
  3. Выберите в Визуальном режиме какое-нибудь другое слово.
  4. Воспользуйтесь пунктом меню "Редактировать/Вклеить". Выбранное вами слово было заменено на два слова из буфера обмена.
  5. Переместите курсор куда нибудь в другое место и нажмите на среднюю кнопку. Вы увидите, что слово, которое только что было заменено на два других слова из буфера обмена, теперь вставлено на новом месте.

Если пользоваться "текущим выделением" и "настоящим буфером обмена" осторожно, то можно успешно применять это свойство при редактировании.

ИСПОЛЬЗОВАНИЕ КЛАВИАТУРЫ

Если вам не нравится пользоваться мышью, то доступ к текущему выделению и настоящему буферу обмена можно получить с клавиатуры при помощи двух регистров. Регистр "* используется для текущего выделения.

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

Чтобы вставить отмеченную строку перед курсором введите

"*P

Обратите внимание на прописную "P". Строчная "p" вклеит текст после курсора.

Регистр "+ используется для настоящего буфера обмена. Например, вы можете скопировать текст от позиции курсора до конца строки в настоящий буфер обмена при помощи команды

"+y$

Вспомните, что "y" это команда Vim для копирования.

Для вклейки содержимого настоящего буфера обмена перед курсором:

"+P

Как видите, команды те же самые, что и для текущего выделения, но вместо регистра * используется регистр +.


09.4 Режим выделения

Теперь покажем нечто более полезное на MS-Windows, нежели на X-Windows, хотя это можно делать в обеих системах. Вы уже знаете о Визуальном режиме. Режим Выделения очень похож на Визуальный режим, поскольку также используется для выделения текста. Вместе с тем, есть очевидное отличие: при наборе текста выделенный текст удаляется и заменяется на набранный текст.

Для того, чтобы перейти в режим Выделения, необходимо его разрешить (на MS-Windows он скорее всего уже разрешён, но хуже от того, что вы разрешите его еще раз, не будет):

:set selectmode+=mouse

Теперь можно использовать мышь для выделения текста. Текст подсвечивается точно так же, как и в Визуальном режиме. Нажмите какую-нибудь кнопку - выбранный текст удаляется и вместо него появляется введённый символ. Редактор автоматически переходит в режим Вставки, так что вы можете продолжить набор.

Поскольку ввод обычного текста удаляет выделенный текст, то вы не можете пользоваться обычными командами перемещения курсора, такими как "hjkl", "w", и т.д. Вместо этого пользуйтесь кнопками перемещения курсора с нажатым <Shift>. Так, <S-Left> будет перемещать курсор влево. Другие кнопки курсора в комбинации с кнопкой <Shift> так же работают как ожидается, включая <S-End> и <S-Home>.

Настроить режим Выделения можно при помощи опции 'selectmode'.


Следующая глава: Внесение серьёзных изменений
Авторские права: см. Авторские права