Vim Configuration Files:
Vim can be configured system wide (globally) via the /etc/vim/vimrc.local file on Ubuntu/Debian based operating systems. On CentOS 7 and RHEL 7, the system wide configuration file for Vim is in /etc/vimrc.
You can open the system wide configuration file of Vim as follows:
Ubuntu/Debian:
CentOS 7 and RHEL 7:
You can also do user specific configuration of Vim. All you have to do is to create a .vimrc file in the HOME directory of the user than you want to configure Vim for and add the required Vim configuration options there.
You can create a .vimrc file for your login user with the following command:
Then, open .vimrc file with vim with the following command:
For simplicity, I will refer to both system wide Vim configuration file and user specific Vim configuration file as vimrc file. You can use either the system wide Vim configuration file or the user specific Vim configuration file to configure Vim depending on what you want to do.
Showing Line Numbers:
By default, Vim does not show line numbers. Line number is very important for programming.
To show line numbers, open Vim configuration file (global or user specific depending on your choice) and type in the following Vim command:
Now, type in :wq! and press <Enter> to save the configuration file.

Now, Vim should show line numbers.

Enable Syntax Highlighting:
Vim may not have syntax highlighting enabled by default. But you can easily enable syntax highlighting though the vimrc file by adding the following line of Vim command to the file.

Changing Syntax Highlighting Color scheme:
Vim has many syntax highlighting color schemes by default. You can change between them if you don’t like the color scheme that is currently set.
To change the color scheme, type in the following vim command to the vimrc file.
Now, replace COLOR_SCHEME_NAME to one of the following keywords:
default, blue, darkblue, delek, desert, elford, evening, industry, koehler, morning, murphy, pablo, peachpuff, ron, shine, slate, torte, zellner
The syntax highlighting color scheme should be changed. I set it to industry as you can see in the screenshot below.

Setting Tab Size:
You can also configure the tab size in Vim though the vimrc file. If you think the default tab size is too big for you or is not enough, then this is a good news for you.
For me the tab size of 4 is enough. Python developers often use the tab size of 2.
To set the tab size to 4 (let’s say), open your vimrc file and type in the following vim command:

For tab size 2, you would type in the following Vim command in your vimrc file.
Enabling Automatic Indentation:
You can enable automatic indentation to automatically insert tabs or spaces when you write codes with Vim.
To enable automatic indentation in Vim, type in the following Vim command to the vimrc file.

Replacing Tabs with White Spaces:
When you insert tabs into your codes and save it and send it to someone else, he/she must use the same tab size as you did. Otherwise, the code would look very ugly. In Vim, there is a solution. Vim can automatically replace tabs to spaces. For example, let’s say, your tab size is set to 4. So, when you insert tab into your code, Vim will automatically replace it with 4 white spaces. So, when you send the code to your friend, it will be the same nevertheless of the tab size in his/her editor.
To replace tabs with white spaces, type in the following Vim command in your vimrc file.

Removing Multiple Spaces on Single Backspace:
If you’re using expandtab to replace tabs to white spaces automatically on Vim, then you may have noticed that pressing <Backspace> once removes only a single white space. That means, if you’ve set tabstop to 4, then you have to press <Backspace> 4 times to remove all 4 white spaces.
Luckily, Vim has remedies for that. You can type in the following line on your vimrc file to remove the number of white spaces that was replaced by for the tab by pressing <Backspace> just once.
NOTE: As I set tabstop to 4, I also set softtabstop to 4. So, 4 white spaces for each tab will be removed all together with a single press of the <Backspace> key.

Highlight the Current Line:
You can highlight the line you’re currently on in Vim. To do that, open your vimrc file and type in the following Vim command:

Other vimrc Commands:
You can add Vim functions and other commands on the vimrc file to configure Vim. You may take a look at the Vim official documentation at http://vimdoc.sourceforge.net/ to learn more about it.
You may also read the article A Good Vimrc at https://dougblack.io/words/a-good-vimrc.html to find the most common Vim commands that you can use.
So, that’s how you configure Vim text editor with vimrc file. Thanks for reading this article.
Руководство пользователя Vim: Настройки
Vim можно настраивать под собственные нужды. Эта глава поясняет как заставить Vim запускаться с требуемыми опциями, как добавлять модули для расширения функциональных особенностей или определять собственные макросы.
05.1 Файл vimrc
Возможно вы уже успели устать от набора команд, которые часто используете. Для запуска Vim с установленными по умолчанию любимыми опциями и привязками, их следует записать в так называемый файл vimrc. Vim читает этот файл при запуске.
Если вы не знаете, где находится ваш файл vimrc, то воспользуйтесь следующей командой:
Один из первых файлов в списке будет называться «.vimrc» или «_vimrc» и он будет расположен в вашем домашнем каталоге.
Если у вас еще нет файла vimrc, то см. vimrc, чтобы выяснить, как его создать. Кроме того, в выводе команды «:version» также есть упоминание о «пользовательском файле vimrc», который ищет Vim.
В Unix всегда используется следующий файл:
В системах MS-DOS и MS-Windows чаще всего используется один из следующих файлов:
Файл vimrc может содержать все команды, начинающиеся с двоеточия. Наиболее простые из них устанавливают те или иные опции. Например, если вам хочется, чтобы Vim всегда запускался с включённой опцией ‘incsearch’, то добавьте в ваш файл vimrc следующую строку:
Для того, чтобы эта строка начала работать, необходимо выйти из Vim и заново запустить его. Позднее мы научимся это делать без выхода из Vim.
В этой главе объясняются только самые основные вещи. Более подробно о написании файла сценария Vim читайте здесь: Написание сценариев Vim.
05.2 Пример файла vimrc с пояснениями
В первой главе было показано, как примерный файл vimrc, включённый в пакет Vim может быть использован для запуска Vim в несовместимом режиме (см. несовместимость). Этот файл можно найти здесь:
В этом разделе мы покажем как использовать различные команды в этом файле. В итоге у вас появится представление о том, как создавать собственные настройки. Тем не менее здесь не будет дано подробных пояснений, для этого можно воспользоваться командой «:help».
Как уже говорилось в первой главе, руководство подразумевает, что вы работаете с Vim в улучшенном режиме, который не всегда совместим с Vi. Для этого прежде всего необходимо выключить опцию ‘compatible’ указанной выше командой.
Эта опция определяет где в режиме Вставки кнопка <BS> может удалять символ перед курсором. Перечисленные через запятую значения позволяют Vim удалять пробелы в начале строки, символы переноса строки и символ, перед которым был осуществлён переход в режим Вставки.
Эта опция указывает Vim, что надо использовать отступ предыдущей строки для вновь созданной строки. Таким образом, перед новой строкой образуется то же самое количество пробелов, как и на предыдущей строке. Например, при нажатии <Enter> в режиме Вставки или при использовании команды «o» для открытия новой строки.
Это позволяет Vim оставлять резервную копию файла при записи, за исключением системы VMS, которая всегда хранит старые версии самостоятельно. Резервная копия файла имеет то же самое имя, что и оригинал, с добавлением «
Хранить в истории 50 команд и 50 шаблонов для поиска. Если вы пожелаете запоминать меньше или больше строк, то можно поставить другое число.
Линейка позволяет всегда показывать текущее положение курсора в нижнем правом углу экрана Vim.
Показывать незавершённую команду в правом нижнем углу экрана Vim, слева от линейки. Например, при наборе «2f», Vim ожидает ввода символа, который требуется найти и показывает «2f». После нажатия «w» выполняется команда «2fw» и «2f» исчезает с экрана.
Показывает соответствие шаблону поиска во время набора шаблона.
Определяет привязку кнопки. Подробнее об этом говорится в следующем разделе. В данном случае определяется, что команда «Q» выполняет форматирование при помощи оператора «gq». Именно так это работало до Vim 5.0. В противном случае команда «Q» начинает режим Ex, но он вам вряд ли потребуется.
Это также привязка, но более сложная. Мы не будем здесь объяснять как она работает, но смысл её заключается в следующем: «p» в Визуальном режиме переписывает выбранный текст вклеенным при помощи этой команды. Как видите, привязки могут делать довольно сложные вещи, оставаясь при этом всего-навсего последовательностью команд, исполняемых как если бы вы их сами набрали на клавиатуре.
Эти команды включают подсветку синтаксиса на терминалах, где есть поддержка цвета. Опция ‘hlsearch’ заставляет Vim подсвечивать соответствия последнему шаблону поиска. Команда «if» очень полезна для установки опций при соблюдении определённых условий. Подробнее об этом написано в Операторы и перемещения.
Это позволяет включить три интеллектуальных механизма:
| 1. Определение типа файла | В начале редактирования файла Vim пытается определить с каким типом файла он работает. Если вы редактируете «main.c», то Vim определит по расширению «.c», что перед ним файл типа «c». Если вы редактируете файл, начинающийся с «#!/bin/sh», то Vim распознает, что это файл сценария оболочки «sh». Определение типа файла используется для подсветки синтаксиса и двух других операций, которые рассматриваются ниже. См. Типы файлов. |
| 2. Использование модулей для файлов определённого типа | Файлы различных типов удобно редактировать с различными опциями. Например, при редактировании файлов типа «c» очень полезно включить опцию ‘cindent’ для автоматического форматирования отступов строк. Такие часто употребляемые опции описаны в файлах модулей для различных типов файлов. Вы также можете написать свой собственный модуль для любого типа файла, см. Написание модуля типа файла. |
| 3. Использование файлов форматирования отступов | При редактировании исходных текстов программ отступ строки часто может быть вычислен автоматически. В Vim имеется набор правил для вычисления отступов для некоторых типов файлов. См. :filetype indent on и ‘indentexpr’. |
Эта команда заставляет Vim переносить строки, если они становятся длиннее 78 символов, для файлов, которые были определены как обычный текст. В команде фактически две части. «autocmd FileType text» является автокомандой, определяющей, что последующая команда выполняется всякий раз, когда тип файла определён как «обычный текст». «setlocal textwidth=78» присваивает опции ‘textwidth’ значение 78 для данного файла.
Ещё одна автокоманда. В данном случае она выполняется после чтения файла. Сложный набор команд после неё ищет, если была определена отметка ‘» и осуществляет прыжок к этой отметке. Обратная косая черта в начале строки используется для продолжения команды с предыдущей строки, чтобы строка не была слишком длинной. См. продолжение строки. Этот синтаксис работает только в файле сценария Vim, но не в командной строке.
05.3 Простые привязки кнопок
Привязка позволяет вам повесить серию команд Vim на единственную кнопку. Предположим, что вам требуется часто выполнять операцию помещения отдельных слов в фигурные скобки, т.е. заменять слово вроде «количество» на слово «<количество>«. При помощи команды :map вы можете указать Vim что для этой цели следует использовать кнопку F5. Сама команда выглядит так:
Замечание: При наборе этой команды вы должны вводить <F5> буквально, путём ввода четырёх символов на клавиатуре. <Esc> также вводится в пять символов, а не нажатием кнопки <Esc>. Помните об этом при чтении данного руководства!
Давайте разберёмся, что происходит, по порядку:
| <F5> | Функциональная кнопка F5 будет использована для запуска последующей серии команд. |
| i <<Esc> | Вставить символ <. <Esc> прекращает режим Вставки. |
| e | Переместиться к концу слова. |
| a><Esc> | Добавить > в конце слова. |
После того, как вы выполните команду «:map», всё что требуется сделать для того, чтобы заключить слово в фигурные скобки, это подвести курсор к первому символу слова и нажать F5.
В этом примере в качестве переключателя привязки используется единственная клавиша, но это может быть любая строка. Следует, однако, иметь в виду, что при использовании существующей команды Vim эта команда больше не будет доступна, поэтому таких ситуаций лучше избегать.
Одним из символов, которые полезно использовать с привязками, является обратная косая черта. Поскольку вам вероятно захочется определить несколько привязок, то добавьте еще какой-нибудь символ. Например, вы можете определить, что «\p» будет добавлять скобки вокруг слова, а «\c» будет добавлять фигурные скобки. Например:
Вам потребуется набирать \ и p достаточно быстро друг за другом, чтобы Vim понимал, что они связаны друг с другом.
Команда «:map» без аргументов показывает список текущих привязок, как минимум для Обычного режима. Подробнее о привязках читайте в разделе 40.1.
05.4 Добавление внешнего модуля
Функциональность Vim может быть расширена за счёт внешних модулей. Модулем является сценарий Vim, который подгружается автоматически при запуске Vim. Добавить модуль можно поместив соответствующий файл сценария в каталог plugin.
Существует два типа модулей:
| общие модули: | Используются для всех типов файлов |
| модули типа файла: | Используются только для определённых типов файла |
Сначала мы обсудим общие модули, а затем рассмотрим модули типов файла.
ОБЩИЕ МОДУЛИ
При запуске Vim автоматически загружает ряд общих модулей. Такие модули добавляют функциональные особенности, которые хотелось бы использовать большинству пользователей, но были реализованы в виде подгружаемого модуля, а не прошиты в код редактора. Список стандартных модулей можно посмотреть здесь: Стандартные модули расширения. Также смотрите Загрузка модулей.
Вы можете добавить общий модуль для расширения функциональности, чтобы он всегда подгружался при запуске Vim. Для этого требуется выполнить всего две операции:
- Найти требуемый модуль.
- Поместить его в правильный каталог.
ГДЕ ВЗЯТЬ НУЖНЫЙ МОДУЛЬ ОБЩЕГО НАЗНАЧЕНИЯ?
Где найти необходимые модули?
- Некоторые модули включены в поставку Vim. Посмотрите в каталоге $VIMRUNTIME/macros и его подкаталогах
- Загрузите требуемые модули из сети, полезный адрес: https://vim.sf.net.
- Иногда исходные тексты модулей пробегают в рассылке Vim.
- Модуль можно написать самостоятельно. См. Написание модулей.
ИСПОЛЬЗОВАНИЕ ОБЩЕГО МОДУЛЯ
Прочитайте внимательно текст модуля, чтобы узнать о правилах его использования. Скопируйте файл модуля в каталог модулей:
Пример для Unix (предположим, что у вас пока нет каталога для модулей):
Вот и всё! Теперь вы можете использовать команды, определённые в этом модуле для выравнивания текста по обоим краям.
МОДУЛИ ТИПА ФАЙЛА
Vim распространяется с набором модулей для ряда типов файлов, которые можно начать использовать при помощи команды
Вот и всё, что для этого требуется. См. vimrc filetype.
Если у вас нет модуля для какого-то определённого типа файла, или вы нашли более качественный модуль, то можете его добавить в свою систему. для этого нужно:
- Получить копию модуля.
- Поместить её в правильный каталог.
ГДЕ ВЗЯТЬ МОДУЛЬ ТИПА ФАЙЛА?
Там же, где берутся общие модули. Посмотрите, если есть указание типа файла, то это модуль типа файла. Сценарии в $VIMRUNTIME/macros являются общими, а модули типов файла находятся в $VIMRUNTIME/ftplugin.
ИСПОЛЬЗОВАНИЕ МОДУЛЯ ТИПА ФАЙЛА
Модули типов файла добавляются копированием в необходимый для этого каталог. Он находится там же, где и каталог для модулей общего назначения, но называется «ftplugin». Предположим, у вас есть модуль для типа файла «stuff» и вы работаете на Unix. Тогда вам нужно поместить этот файл в каталог ftplugin:
Если такой файл уже существует, то значит у вас уже есть модуль для типа файла «stuff». Проверьте, не конфликтует ли существующий модуль с модулем, который вы хотите добавить. Если всё в порядке, то вы можете присвоить новому модулю другое имя:
Символ подчёркивания используется для отделения названия типа файла от остальной части имени, которая может быть чем угодно. Название «otherstuff.vim» не будет работать, поскольку такой файл будет загружаться для типа файла «otherstuff».
На MS-DOS нельзя использовать длинные имена файлов. Если тип файла содержит более шести символов, то при добавлении дополнительного модуля у вас возникнут проблемы. Для решения проблем такого рода можно использовать подкаталог:
В общем случае, имена для модулей типа файла следующие:
В качестве «<name>» можно использовать любое имя. Например, для типа файла «stuff» на Unix:
Часть имени <filetype> это название типа файла, для которого будет применяться данный модуль. Только файлы данного типа будут использовать настройки, взятые из модуля. <name> не имеет значения и может использоваться для загрузки дополнительных модулей для данного типа файла.
Замечание: модуль должен иметь расширение «.vim».
-
и информация о том, как избежать привязок, которые могут вызвать проблемы. при запуске Vim. , заданных в модулях общего назначения. и советы о том, что делать, когда не модуль работает. .
05.5 Добавление файла справки
Если вам повезло, то модуль, который вы установили, поставлялся вместе с файлом справки. Давайте посмотрим, как правильно установить файл справки, чтобы он был доступен в справочной системе.
Возьмём, например, модуль «matchit.vim» (он поставляется вместе с Vim). Этот модуль позволяет использовать команду «%» в том числе для перемещения между соответствующими друг другу тегами HTML, if/else/endif в сценариях Vim и т.д., одним словом чрезвычайно полезная вещь, но, к сожалению, без обратной совместимости, по причине чего он не включён по умолчанию.
У этого модуля есть файл справки: «matchit.txt». Для начала скопируем модуль в необходимый каталог. На этот раз сделаем это непосредственно из Vim, используя переменную окружения $VIMRUNTIME. (Если у вас уже есть необходимый каталог, то можно пропустить некоторые команды «mkdir».)
Теперь создадим каталог «doc» в одном из каталогов, указанных в ‘runtimepath’.
Скопируем в него файл справки:
А теперь, самое интересное: создадим местный файл меток, который позволит перемещаться к темам в новом файле справки при помощи команды :helptags.
Теперь можно пользоваться командой
чтобы найти «g%» в файле справки, который мы только что добавили. Когда вы наберёте
то увидите соответствующую ссылку в файле справки. Заголовки местных файлов справки автоматически добавляются в этот раздел.
О написании собственного файла справки см. Создание справки.
05.6 Окно опций
Справочник по опциям редактора можно посмотреть здесь: |опции|. Альтернативным вариантом может служить использование команды
Эта команда открывает новое окно со списком опций. Каждой опции соответствует краткое пояснение. Опции в этом окне группируются по темам. Для перехода к списку опции, существующих для данной темы, подведите курсор к требуемой теме и нажмите <Enter>. Повторное нажатие <Enter> возвращает вас назад к списку тем. Вы также можете использовать CTRL-O.
Значение опции можно изменять прямо в окне. Например, подведите курсор к теме «отображение текста», затем переместите курсор вниз к строке
Когда вы нажмёте <Enter>, то строка изменится на
Это значит, что теперь эта опция отключена.
Краткое описание опции ‘wrap’ можно прочитать над данной строкой. Переместите курсор на одну строку вверх и нажмите <Enter> для перехода к полному тексту справки по опции ‘wrap’.
У тех опций, которые принимают числовое или строковое значение, можно редактировать это значение прямо в окне опций. Для того, чтобы изменения вступили в силу, нажмите <Enter>. Например, переместите курсор на несколько строк вверх к строке
Поместите курсор на цифре ноль при помощи команды «$». Измените ноль на пять командой «r5». Теперь нажмите <Enter>, чтобы новое значение опции вступило в силу. Вы заметите, что теперь, когда вы перемещаете курсор, прокрутка окна начинается до того момента, как курсор подходит к границе окна. Именно это и делает опция ‘scrolloff’, она указывает на отступ от границы экрана, где начинается прокрутка.
05.7 Часто используемые опции
В редакторе существует огромное множество опций. Большую часть из них вы наверняка никогда не будете использовать. Упомянем те, которые, напротив, могут оказаться наиболее полезными. Не забудьте, что по каждой опции можно получить справку при помощи команды «:help», имя опции при этом следует заключать в одинарные кавычки. Например:
Если вы что-то напутали с установками значения опции, то можно восстановить значение по умолчанию при помощи символа амперсанда (&) после имени опции. Например:
ОТКЛЮЧЕНИЕ ПЕРЕНОСА СТРОК
Vim обычно переносит длинные строки, чтобы вы могли видеть весь текст целиком. Иногда вам может потребоваться, чтобы строки не переносились, а продолжались в правой части экрана. В этом случае вам потребуется пользоваться горизонтальной прокруткой, чтобы просматривать фрагменты длинной строки. Перенос строк отключается командой:
Vim автоматически прокручивает текст в окне, если вы перемещаетесь к тексту, который не показан на экране. Чтобы видеть 10 символов рядом с курсором, воспользуйтесь командой
Это не изменяет сам текст в файле, только способ его отображения.
ПЕРЕНОС КОМАНД ПЕРЕМЕЩЕНИЯ
Большинство команд перемещения останавливаются в начале и конце строки. Это поведение можно изменить при помощи опции ‘whichwrap’. Следующая команда устанавливает эту опцию в значение по умолчанию:
Такая настройка позволяет кнопке <BS>, когда она используется в первой позиции строки, перемещать курсор в конец предыдущей строки. Кнопка <Space> (пробел) перемещает курсор от конца строки к началу следующей.
Для того, чтобы кнопки курсора <Left> и <Right> также могли переносить курсор между строками, используйте команду:
Однако, это будет работать только в Обычном режиме. Чтобы кнопки <Left> и <Right> вели себя похожим образом и в режиме Вставки, используйте команду:
Можно также добавить еще несколько флагов, см. ‘whichwrap’.
ПРОСМОТР ТАБУЛЯЦИИ
Символы табуляции в файле, как правило, не видны. чтобы сделать их видимыми используйте команду:
Теперь каждый символ Tab отображается в виде ^I. Кроме того, в конце строки отображается $, так что вы можете сразу видеть лишние пробелы в конце строк.
К сожалению, когда в файле много символов табуляции, то текст в этом режиме начинает напоминает кашу. На терминалах, поддерживающих цвет, а также в графическом интерфейсе, Vim может показывать пробелы и символы табуляции в виде подсвеченных символов. Воспользуйтесь опцией ‘listchars’:
Теперь каждый символ табуляции будет показан в виде «>—» (с разным количеством символов «-«), а пробелы на конце строк в виде «-«. Гораздо приятнее, правда?
КЛЮЧЕВЫЕ СЛОВА
Опция ‘iskeyword’ определяет, какие символы могут появляться в слове:
Символ «@» соответствует всем буквам алфавита, «48-57» соответствует символам ASCII от 48 до 57 (т.е. цифрам от 0 до 9), «192-255» это печатные символы.
Иногда вам может понадобиться включить в список словарных символов символ «минус», чтобы команды вроде «w» считали такие слова, как «что-то» одним словом. Это можно сделать так:
Если вы посмотрите на новое значение, то увидите, что Vim добавил для вас запятую.
Как открыть vimrc в vim
Библиотека сайта rus-linux.net
На главную -> MyLDP -> Электронные книги по ОС Linux
| Назад | Просто о Vim | Вперед |
Vim : ПлагиныВведениеВ предыдущей главе мы рассмотрели написание скриптов, расширяющих существующую функциональность Vim. Мы вызываем эти скрипты, которые расширяют и добавляют функции, как "плагины". Существуют различные виды плагинов: • плагины подсветки синтаксиса Вы можете не только написать свой плагин, но и скачать и использовать плагины , написанные другими. Настройка с использованием vimrcКогда я устанавливаю новый дистрибутив Linux или переустанавливаю Windows, первое, что я делаю после установки Vim, — восстанавливаю мой последний vimrc файл из архивной копии, и потом запускаю Vim. Почему это важно? Поскольку мой vimrc файл содержит переменные настройки/установки, я люблю подстраивать Vim под себя и собственного удобства. Вы можете создать два файла для настроек Vim на свой вкус: 1. vimrc — для основных настроек 2. gvimrc — для специфических GUI настроек Эти файлы хранятся в: • %HOME%/_vimrc и %HOME%/_gvimrc в Windows • $HOME/.vimrc и $HOME/.gvimrc на Linux/BSD/Mac OS X Смотри :help vimrc о точном их местонахождении в вашей системе. Файлы vimrc и gvimrc могут содержать любые команды Vim. В определениях следует использовать только простые установки в файлах vimrc, и расширенные опции из плагинов. Например, вот содержание моего файла vimrc: Обратите внимание, что в командах отсутствует префикс в виде двоеточия. Двоеточие не является обязательным при написании скриптов в файлах, поскольку двоеточие предполагает использование команд в нормальном режиме. Если вы хотите детально изучить использование каждого параметра, изучайте :help. Часть моего файла gvimrc: Существуют различные примеры файлов vimrc , вам обязательно нужно посмотреть их и узнать различные виды настроек, которые можно сделать, а затем выбрать из них те, что вам понравятся, и записать их в собственных vimrc. Несколько хороших, которые я нашел в прошлом: Известный факт, что персональный файл vimrc, как правило, отражает то, как долго человек использует Vim. Глобальные плагиныГлобальные плагины используются для реализации глобальных/основных функций. Глобальные плагины могут быть сохранены с двух местах: 1. $VIMRUNTIME/plugin/ стандартные плагины идущие с Vim при установке 2. Для установки ваших плагинов или плагинов, которые вы где то скачали, вы можете использовать ваш каталог плагинов: • $HOME/.vim/plugin/ на Linux/BSD/Mac OS X • %HOME%/vimfiles/plugin/ на Windows • Смотрите :help runtimepath для детальной информации о вашем каталоге плагинов. Давайте посмотрим, как использовать плагины. Полезно иметь плагин highlight_current_line.vim от Ansuman Mohanty, из названия которого можно понять, что он делает. Скачайте highlight_current_line.vim последней версии и положите его в ваш каталог плагинов (как упоминалось выше). Теперь перезапустите Vim и откройте любой файл. Обратите внимание, что текущая строка будет подсвечена по сравнению с другими строками в файле. Но, что если вам это не понравилось? Просто удалите файл highlight_current_line.vim и перезапустите Vim. Аналогично, вы можете установить ваши related.vim или capitalize.vim из главы Скрипты в ваш каталог плагинов, и это позволит нам избежать трудностей с использованием :source . В конечном счете, любой плагин Vim, который вы напишете, должен быть в вашем каталоге плагинов .vim/vimfiles . Плагины FiletypeПлагины Filetype написаны для определенных типов файлов. Например, программы, написанные на языке C, могут иметь свой собственный стиль отступов, закладок, подсветки синтаксиса и показываемых событиях о ошибках. Эти плагины не общего назначения, они работают на определенных, специфических типах файлов. Использование плагинов filetypeДавайте возьмем плагин filetype для XML. XML это декларативный язык, который использует теги для описание структуры самого документа. Например, если у вас есть текст, как этот: Он может быть записан в XML так (формат ‘DocBook XML’): <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" Ashok Banker’s next book immediately following the Ramayana is said to be a novel tentatively titled "Iron Gods" scheduled to be published in 2007. A contemporary novel, it is an epic hard science fiction story about a war between the gods of different faiths. Weary of the constant infighting between religious sects and their deities, God (aka Allah, Yahweh, brahman, or whatever one chooses to call the Supreme Deity) wishes to destroy creation altogether. A representation of prophets and holy warriors led by Ganesa, the elephant-headed Hindu deity, randomly picks a sample of mortals, five of whom are the main protagonists of the book—an American Catholic, an Indian Hindu, a Pakistani Muslim, a Japanese Buddhist, and a Japanese Shinto follower. The mortal sampling, called a ‘Palimpsest’ is ferried aboard a vast Dyson’s Sphere artifact termed The Jewel, which is built around the sun itself, contains retransplanted cities and landscapes brought from multiple parallel Earths and is the size of 12,000 Earths. It is also a spaceship travelling to the end of creation, where the Palimpsest is to present itself before God to plead clemency for all creation. Meanwhile, it is upto the five protagonists, aided by Ganesa and a few concerned individuals, including Lucifer Morningstar, Ali Abu Tarab, King David and his son Solomon, and others, to bring about peace among the myriad warring faiths. The question is whether or not they can do so before the audience with God, and if they can do so peacefully—for pressure is mounting to wage one final War of Wars to end all war itself. (Excerpt taken from http://en.wikipedia.org/w/index.php?title=Ashok_Banker&oldid=86219280 under the GNU Free Documentation License) Обратите внимание, что структура документа в версии XML более четкая. Поэтому он прост для инструментов конвертирования XML в другие типы форматов, включая PDF и печатные версии. Плохо то, что людям писать на XML более трудно. А давайте посмотрим, как ftplugins может помочь пользователям Vim, которые пишут на XML. 1. Сначала скачаем xmledit ftplugin и положим его в ваш каталог 2. Добавьте следующую строку в ваш autocmd BufNewFile,BufRead *.xml source (Проверьте, что вы указали правильно каталог в вашей операционной системе) Это включает плагин ftplugin xmledit на время открытия файла с расширением XML. 3. Откройте Vim и перейдите к редактированию файла с именем test.xml. 4. Наберите <article. 5. Теперь наберите завершающую > ,и смотрите как плагин xmledit ftplugin автоматически добавит завершающий тег для вас. Итак, ваш документ теперь выглядит так: 6. Теперь наберем другой > и посмотрим как тег расширяется и мы можем ввести еще теги. Документ должен выглядеть так: 7. Заметьте, что курсор также переместился на один отступ, так что вы можете писать документ в четко структурированном виде, чтобы отразить структуру документа. 8. Повторяйте процесс пока вы не напишете весть документ. Обратите внимание, как плагин ftplugin для XML делает простым создание XML документов. Это как раз то, для чего предназначены плагины ftplugins. Написание плагина filetypeДавайте напишем свой собственный ftplugin. В нашем предыдущем примере использовался плагин xmledit.vim ftplugin и запись в формате XML, и мы видели, что мы должны вставлять стандартный заголовок в верхней части каждого файла DocBook XML (специфичный для формата, который мы использовали). Почему бы не сделать это автоматически в Vim, через использование ftplugin? В xml ftplugin нужно заложить информацию, которая будет добавляться в начало нового XML-файла: <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" Итак, давайте создадим новый ftplugin, назовем его "xmlheader.vim" для работы только с событием ‘BufNewFile’. Добавьте следующее в ваш файле autocmd BufNewFile *.xml source А теперь, все что нам нужно сделать в xmlheader.vim , это создать первую и вторую строку в файле: Теперь перезапустите Vim, убедитесь что файл ‘test.xml’ еще не существует, и запустите :e test.xml . Вы можете видеть, что заголовок уже записан! Подсветка синтаксисаВ предыдущем разделе мы создали файл DocBook XML. Было бы полезно, если бы в нем цветом была выделена структура XML-файла для правильных тегов DocBook, чтобы понимать, что мы пишем корректно. Оказывается, что это возможно, если мы просто запустим :set filetype=docbkxml . И тогда Vim использует файл синтаксиса, расположенный в $VIMRUNTIME/syntax/docbkxml.vim . Файл синтаксиса определяет, как части файла зависят друг от друга. Например, файл синтаксиса для XML определяет, каким тегам какие цвета соответствуют в зависимости от имени, и тому подобное. Использование подсветки синтаксисаДавайте посмотрим файл синтаксиса в действии. Скачаем скрипт mkd.vim , который является файлом синтаксиса для Markdown . Markdown — это основной формат, в котором простой текст может быть записан так, что бы потом его можно было конвертировать в HTML. 1. Откройте новый файл в Vim с именем ‘test_markdown.txt’. 2. Запустите :set syntax=mkd 3. Наберите следующий текст в файле: 4. Обратите внимание, как различные части файла, например, заголовок и служебные слова, автоматически выделяются. Это должно, мы надеемся, помочь в создании файлов с синтаксисом Markdown. Написание темы подсветки синтаксисаДавайте посмотрим как написать собственный файл синтаксиса для текстового формата AmiFormat. Подсветка синтаксиса основана на двух действиях: первое — это определение типа текстового формата искомого файла, и второе — это описание того, как его показывать. Например, предположим, что мы хотим найти все вхождения < b>any word</b> для показа жирным шрифтом. Сперва, нам нужно сделать такой шаблон в нашем тексте и затем соединить имя этого шаблона с нужным типом показа: :syntax match ourBold /<b>.*<\/b>/ Первая строка говорит, что мы создаем новый тип синтаксиса на основании шаблона, с именем ‘ourBold’ и определяем шаблон на основе регулярных выражений. Вторая строка говорит, что мы подсвечиваем синтаксис ‘ourBold’. Будет использована схема по умолчанию, она может быть изменена пользователем или можно использовать другие цветовые схемы. Мы можем определить представление ‘ourBold’ для трех различных типов дисплеев, в которых будет запускаться Vim: для черно-белых терминалов, цветных терминалов и GUI (графической версии). Иногда мы хотим определить некоторые задачи в нашем тексте как пункт todo и мы обычно записываем это заглавными ‘TODO’, но что, если мы хотим делать это постоянно? :syntax keyword ourTodo TODO FIXME XXX Сперва мы определяем ключевое слово ‘ourTodo’, которое нужно подсвечивать, и соединим шаблон ‘ourTodo’ с уже существующей группой с названием ‘Todo’ в Vim. Таких, уже существующих групп, которые имеют предопределенные цветовые схемы, в Vim много. Лучше всего привязать наши синтаксические стили к существующим группам. Смотри :help group-name для списка доступных групп. Далее, некоторые блоки кода в группе могут быть заключены в теги [code] .. [/code], как мы можем выделить их подсветкой? :syn region amiCode excludenl start=/\[code\]/ end=/\[\/code\]/ :hi def link amiCode Identifier Во-первых, мы указываем, что мы определяем область текста, начальным и конечным шаблоном (который очень прост в нашем случае), а затем связываем его с уже существующими классом "Identifier". Аналогичным образом, мы можем обработать и определить другие части текста, определенного в описании формата AmiFormat , а окончательный сценарий может выглядеть следующим образом: Теперь, когда скрипт уже работает, я должен загрузить его в раздел скриптов Vim , как я уже писал об этом! Теперь кто угодно может использовать скрипт подсветки синтаксиса AmiFormat в Vim. Для изучения деталей о скриптах подсветки синтаксиса в Vim, прочитайте: Примечяние: Если вы хотите, перерисовать экран в случае, если файл подсветки синтаксиса неправильно работает, нажмите Ctrl-L. Примечяние: Возможно, вы уже догадались, что, когда мы предварительно задали filetype , Vim, в свою очередь, автоматически устанавливает подсветку синтаксиса для этого расширения. Плагины компиляцииПлагины компиляции используются для компиляции программ, написанных на разных языках. Они полезны везде, где требуется преобразование из исходных текстов в другой формат, даже если вы пишете обычный текстовый файл в Markdown и хотите конвертировать текст в HTML с помощью программы преобразования. Давайте изучим использование плагина компиляции для Python. 1. Скачаем скрипт compiler/python.vim и положим его в наш каталог 2. Вставим следующую строку в наш autocmd BufNewFile,BufRead *.py compiler python 3. Перезапустим Vim, откроем файл Python, скажем test.py и введем следующую программу: print ‘Hello World’ 4. Запустите :make и вы увидите успешную компиляцию. 5. Давайте намеренно введем ошибку в программу, изменив написание ‘print’ в ‘pritn’: pritn ‘Hello World’ Теперь запустим :make и обратим внимание, что Vim выдал ошибку и автоматически перевел курсор на строку с ошибкой! 6. Запустим :clist чтобы просмотреть полный список ошибок. 7. После исправления ошибки вы можете выполнить :cnext для перехода к следующей ошибке. Если вы откроете скрипт compiler/python.vim , который мы скачали, вы можете увидеть, что он очень простой — тут только две определенные переменные, одна — это makeprg , которая определяет как сделать ‘make’ файл, т.е. как компилировать это, и вторая — это errorformat , которая определяет форму вывода ошибок компилятора. Я написал плагин компилятор для Adobe Flex с использованием тех же двух переменных. Смотри :help write-compiler-plugin и :help quickfix для подробной информации о том, как написать свой собственный плагин компиляции. Домашнее задание: написать глобальный плагинВ целях закрепления полученных навыков создания плагинов выполните следующее упражнение: Напишите плагин, который удаляет повторяющиеся и избыточные пустые строки в документе. Вы можете использовать либо язык сценариев Vim, или любой другой язык, поддержка которого есть у вас в Vim. Если вам нужно "вдохновение", см. этот совет Vim . Вот еще одно упражнение: Напишите скрипт, который выдает значение и похожие по смыслу слова для текущего слова под курсором. Опять же, если вам нужно "вдохновение", см. мой плагин lookup.vim . Отключение плагиновПредположим, что вы сочтете действия плагина Vim странными, и у вас появиится подозрение, что причиной этого является скрипт. В таком случае вы можете задать в Vim избирательную инициализацию скриптов путем задания аргумента -u в командной строке. Например, vim -u NONE запустит Vim без инициализации скриптов. То есть, работает только Vim. Используйте vim -u — your-minimal-initialization.vim для выполнения только конкретных инициализаций. Эта опция полезна при отладке, если нужно выяснить, вызваны проблемы самим Vim или запуском плагина, и т.д. Смотри :help -u и :help starting для детальной информации. ИтогиМы рассмотрели различные типы плагинов, доступные в Vim, как использовать такие плагины и как писать такие плагины. Теперь мы понимаем, как расширяется Vim, и как мы можем писать плагины для облегчения своей жизни. |