msiu_logo
Кафедра информационных систем и технологий
http://edu.msiu.ru

1. Введение

В этой части материалов о среде разработки MsiuVim описывается назначение тех клавиш основной клавиатуры, которые ещё не рассматривались, даётся краткая информация об используемых встраиваемых модулях (plugins) и файле .vimrc, и рассказывается о том, как установить на своей домашней машине (с операционной системой Linux) среду MsiuVim.

2. Базовые команды Vim

Внимание Обычно в редакторе Vim команда \ не используется. В MsiuVim нажатие на эту клавишу также не приводит к каким-либо действиям. Кроме того, в MsiuVim не применяется и команда Q.
Замечание Напомним, что подавляющее большинство команд редактора допускает использование повторителя — числа, вводимого перед командой.
Замечание Обычно после оператора используется команда движения, которая определяет область действия оператора. Если же вместо команды движения повторяется сам оператор, то областью его действия считается текущая строка, например, dd — удаление текущей сроки.
Замечание Подробную информацию о произвольной команде редактора можно получить с помощью встроенной справочной системы. Например, о назначении команды U можно узнать так: :h U.

2.1. Команды перемещения (движения)

Команды f, F, t и T, обеспечивающие перемещение курсора в позицию текущей строки, связанную с символом, указываемым непосредственно после самой команды, нам уже знакомы. При их использовании часто бывают полезны следующие дополнительные команды:

;

повтор последней из команд f, F, t и T

,

повтор последней из команд f, F, t и T в противоположном направлении

Следующие команды чаще всего используются с повторителем count — числом, которое им предшествует:

|

перемещение в колонку с номером count в текущей строке

_ (подчёркивание)

перемещение вниз на count-1 строк в позицию с первым непробельным символом

2.2. Команды прямого действия

Наряду с уже известными нам командами прямого действия i и A, выполняющими переключение из нормального режима в режим вставки, часто используются похожие на них следующие команды:

I (Insert at bol (begin of line) — вставить в начало строки)

перемещение к первому непробельному символу строки и переключение в режим вставки

a (append — добавить)

переключение в режим вставки (за текущим символом)

U (Undo — аннулировать, уничтожить сделанное)

отмена всех последних выполненных изменений в той строке, где производились последние изменения; эта команда сама также считается изменением, поэтому повторное U отменяет её действие

&

повтор последней команды :s (команды замены)

2.3. Операторы

Нами не был рассмотрен лишь последний из существующих операторов:

!

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

Часто в качестве фильтра используют следующие стандартные утилиты:

wc (word count — подсчёт слов)

утилита для подсчёта количества символов, слов и строк;

tac (cat «наоборот»)

аналог cat, печатающий исходный файл в обратном порядке;

cut (cut — вырезать)

утилита для вырезания определённых полей из всех строк заданных файлов;

sort (sort — сортировать)

утилита для сортировки строк по указанным критериям;

uniq (unique — уникальный)

утилита для выявления (и удаления) дубликатов строк;

grep (search globally for lines matching the regular expression, and print them» — искать везде строки, соответствующие регулярному выражению, и печатать их)

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

Например, команда !Gsort отсортирует все строки файла, начиная с текущей.

Замечание

Для ознакомления с возможностями утилиты sort можно воспользоваться командой man sort, которая должна быть набрана в терминале.

В редакторе эту же информацию можно получить с помощью клавиши K (в нормальном режиме), когда курсор находится на предварительно введённом слове sort.

2.4. Особые команды

Команд, начинающихся с g и z очень много. Посмотреть их все можно, набрав в редакторе :h g и :h z соответственно. Ниже перечислены лишь некоторые из них.

zt

переизобразить текущее окно, разместив строку с курсором вверху окна

zb

переизобразить текущее окно, разместив строку с курсором внизу окна

zz

переизобразить текущее окно, разместив строку с курсором посередине окна

gg

перейти к первому непробельному символу первой строки; если перед этой командой указан повторитель count, то переход осуществляется к первому непробельному символу строки с номером count

g_

перейти к последнему непробельному символу текущей строки; если перед этой командой указан повторитель count, то выполняется переход на count-1 строк вниз к последнему непробельному символу

gf (goto file — перейти к файлу)

перейти к редактированию файла, имя которого находится под или после курсора

ZZ

сохранить редактируемый файл (если он был модифицирован) и закрыть текущее окно; если оно было единственным, то завершить работу редактора

ZQ

закрыть текущее окно без сохранения возможных изменений; если оно было единственным, то завершить работу редактора; эта команда аналогична команде :q!

2.5. Важнейшие CTRL-команды

Многие из следующих команд нам уже известны.

Ctrl + V

перейти в визуальный режим работы с прямоугольными блоками текста

Ctrl + R (Redo — переделать)

отменить последнее отменённое действие (откатка откатки)

Ctrl + [

переход по «ссылке» при просмотре документации

Ctrl + T и Ctrl + O

возврат обратно после перехода по «ссылке»

Ctrl + F (Forward — вперёд)

прокрутка на экран вперёд

Ctrl + B (Backward — назад)

прокрутка на экран назад

Ctrl + Е

прокрутка на одну строку вперёд

Ctrl + Y

прокрутка на экран строку назад

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

Ctrl + ^

переключение языка ввода

Ctrl + K

команда ввода диграфов (например, русских кавычек)

Чаще всего при работе с редактором используется несколько окон (windows), для перемещения между которыми можно использовать не только мышку, но и клавиатуру:

Ctrl + W или Ctrl + W h

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

Ctrl + W или Ctrl + W j

перемещение на соседнее снизу окно

Ctrl + W или Ctrl + W k

перемещение на соседнее сверху окно

Ctrl + W или Ctrl + W l

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

2.6. Режим командной строки

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

:w (write — записать)

сохранить сделанные изменения, записав файл

:q (quit — выйти)

закрыть текущее окно

:q!

закрыть текущее окно без сохранения сделанных изменений

:wq (write — записать, quit — выйти)

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

:qa! (quit — выйти, all — отовсюду)

закрыть все окна, завершая работу в редакторе без сохранения возможно сделанных изменений

:h (help — помогать)

открыть окно с документацией по Vim

При наличии модуля NERDTree следующие команды не слишком часто используются, но всё же они могут оказаться полезны:

:n (new — новый)

начать редактировать новый буфер

:w name.rb

сохранить сделанные изменения, записав буфер в файл с именем name.rb

:е name.rb (edit — редактировать)

начать редактировать файл с именем name.rb

2.7. Использование мышки

Замечание Полноценная работа в среде MsiuVim вполне возможна без использования мышки. Для выполнения некоторых действий, однако, она достаточно полезна.

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

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

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

Перемещаться между окнами редактора иногда удобнее с помощью клика мыши, хотя к описанным выше Ctrl + W-командам также можно достаточно быстро привыкнуть.

3. Встраиваемые модули

В среде MsiuVim используется несколько встраиваемых модулей (plugins), одним из важнейших среди которых является модуль vim-ruby, который обеспечивает подсветку синтаксиса языка Ruby, автоматическое выравнивание кода Ruby-программ и ряд иных возможностей. Из последних хочется отметить возможность получения списка методов, применимых к тому или иному объекту. Если, например, после некоторой строки ввести символ точки и нажать на клавишу Tab, то будет показан список всех возможных методов, которые могут применены к строке. Выбрать нужный вариант можно с помощью стрелочек, клавиш Tab, Shift Tab, Page Up, Page Down и некоторых других, после чего следует нажать Enter.

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

Замечание Подробную информацию об использовании автопродолжений в Ruby-программах можно получить с помощью команды :h ft-ruby-omni.

Модуль delimitMate облегчает ввод кода Ruby-программ, предоставляя удобные возможности для манипулирование парами открывающих и закрывающих символов (скобок, кавычек и т.п.). Никаких специальных действий для использования этого модуля предпринимать не нужно.

Замечание Подробную информацию о работе с модулем delimitMate можно получить с помощью команды :h delimitMate.

Модуль NERDTree был достаточно подробно описан в предыдущих частях материалов. Для получения полной информации о нём следует воспользоваться командой :h NERDTree.

Модуль supertab обеспечивает работу с возможными автопродолжениями. Он позволяет после набора одного или нескольких первых символов слова и нажатия на клавишу Tab получить список всех тех возможных продолжений набранной части слова, которые встречаются в уже имеющемся тексте. Если, например, в тексте имеются слова чисто, чисел и числа, а клавиша Tab была нажата после ввода букв чис, то будут предложены указанные варианты завершения. Выбрать нужный вариант можно с помощью стрелочек, клавиш Tab, Shift Tab, Page Up, Page Down и некоторых других, после чего следует нажать Enter.

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

Ctrl + X Ctrl + N

поиск возможных вариантов продолжения частично набранного слова с использованием слов текущего файла;

Ctrl + X Ctrl + I

поиск возможных вариантов продолжения частично набранного слова с использованием слов текущего и всех подключаемых файлов;

Ctrl + X Ctrl + F

поиск возможных вариантов продолжения имени файла;

Tab или Ctrl + X Ctrl + O

поиск возможных вариантов продолжения (в зависимости от контекста) имени метода, класса, константы, символа или переменной.

Замечание С детальным описанием того, как работает автопродолжение, можно ознакомиться с помощью команды :h ins-completion, а с полной документацией о модуле supertab — с помощью команды :h supertab.

Модуль syntastic обеспечивает синтаксическую проверку «на лету» правильности файлов, содержащих программы на более чем 70 различных языках программирования, включая файлы на языке Ruby и файлы системы компьютерной вёрстки TeX.

Замечание Команда :h syntastic позволяет познакомиться с деталями использования модуля syntastic.

Модуль SnipMate даёт возможность автоматически вставлять в текст программы основные конструкции языка Ruby и других языков программирования, делая ввод кода удобным и быстрым. Использование клавиши Tab для этих целей было описано в предыдущих частях материалов.

Замечание Для детального ознакомления с модулем SnipMate следует воспользоваться командой :h SnipMate.

4. Файл .vimrc

Файл .vimrc, находящийся в домашней директории пользователя, является основным конфигурационным файлом среды MsiuVim. Вместе с файлами, содержащимися в директории .vim, он определяет поведение редактора и встроенных в него модулей. Почти все разделы файла .vimrc сопровождаются комментариями, что даёт возможность желающим самостоятельно разобраться с используемыми в этом файле командами и при необходимости модифицировать их.

Отметим лишь команду, задающую используемую в редакторе раскладку клавиатуры для русских букв. Обычно это либо russian-yawerty, либо russian-jcuken. Для выбора желаемой достаточно закомментировать (с помощью символа двойной кавычки) ненужную и перезапустить редактор:

"set keymap=russian-yawerty
set keymap=russian-jcuken
Замечание Содержимое файла .vimrc не является раз и навсегда фиксированным. Со временем в него обязательно будут вноситься изменения.
Внимание Не рекомендуется изменять файл .vimrc без крайней необходимости.

5. Установка среды MsiuVim

Важно Приведённые ниже инструкции предполагают наличие на компьютере операционной системы Linux. Машину с ОС Windows тоже можно превратить в «рабочее место программиста», однако это намного сложнее и не под силу подавляющему большинству первокурсников.

5.1. Проверка возможностей Vim

Редактор Vim в стандартной конфигурации присутствует в любом дистрибутиве операционной системы Linux и, как правило, оказывается установленным. Если по каким-то причинам у вас на компьютере его не оказалось, то установить соответствующий пакет обычно можно одной командой (например, yum install vim).

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

vim --version | grep '+ruby'

должна выдавать что-то подобное следующему:

+printer +profile +python -python3 +quickfix +reltime +rightleft +ruby

Здесь важно наличие подстроки +ruby.

Во-вторых, версия Vim должна быть «огромной». Выдача команды

vim --version | grep Огромная

или

vim --version | grep Huge

должна содержать слово Огромная (или Huge), например, такой:

Огромная версия с графическим интерфейсом GTK2.  Включённые (+) и отключённые (-) особенности:

Или такой:

Огромная версия без графического интерфейса.  Включённые (+) и отключённые (-) особенности:

Если всё так, то можно приступать к установке дополнительных файлов среды MsiuVim. В противном случае следует сначала переустановить Vim.

5.2. Установка дополнительных файлов

Замечание Рассматривается лишь установка среды MsiuVim для одного пользователя в операционной системе Linux, которая не требует наличия привилегий суперпользователя.

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

tar xvfz MsiuVim.tgz

6. «Шпаргалка» по командам Vim

Приведённый ниже рисунок содержит описание всех клавиш основной клавиатуры. Для встречающихся на нём терминов в этой и предыдущих частях материалов были даны переводы и комментарии.

./images/vim-chart4.png