| ч42 создание полноценного плагина | Содержание | ч44 макет плагина с Pathogen |
Первое, о чем нам нужно поговорить, так это о структуре нашего плагина. В прошлом это было хлопотным делом, но теперь есть инструменты, которые делают этот процесс (установки плагинов) намного, намного проще.
Базовый макет
Vim поддерживает разделение плагинов на несколько файлов. Вы так же можете создать множество различных каталогов ~/.vim для разных вещей.
Сейчас мы рассмотрим наиболее важные каталоги, но не стоит слишком заострять на них внимание. Мы рассмотрим их по одному при создании нашего плагина Potion.
Прежде чем мы продолжим, нам нужно поговорить о некоторых терминах.
Я использовал слово "плагин" для обозначения "большого куска Vimscript, который выполняет кучу связанных вещей". Vim имеет более конкретное значение "плагин", который является "файлом в ~/.vim/plugin/".
Большую часть времени я буду использовать первое определение. Я постараюсь уточнять, когда я имею в виду второе.
~/.vim/colors/
Файлы внутри ~/.vim/colors/ обрабатываются как цветовые схемы. Например: если вы запустите [ :color mycolorsVim ], он будет искать файл [ ~/.vim/colors/mycolors.vim ] и запустит его. Этот файл должен содержать все команды Vimscript, необходимые для создания вашей цветовой схемы.
Мы не будем рассматривать цветовые схемы. Если вы захотите создать свою собственную цветовую схему, вам следует скопировать существующую схему и изменить ее под себя. Помните, что :help это ваш друг.
~/.vim/plugin/
Каждый файл внутри ~/.vim/plugin/ будет запускаться один раз при каждом запуске Vim. Эти файлы должны содержать код, который вы хотите что бы он всегда загружался при запуске Vim.
~/.vim/ftdetect/
Файлы из этой директории ~/.vim/ftdetect/ также будут запускаться при каждом запуске Vim.
ftdetect расшифровывается как "определение типа файла". Файлы в этом каталоге должны настраивать автокоманды, которые обнаруживают и устанавливают файлы [ filetype ], и ничего больше. Они никогда не должны быть длиннее одной или двух строк.
~/.vim/ftplugin/
Файлы в ~/.vim/ftplugin/нем разные. И имена этих файлов имеют значение! Когда Vim устанавливает для буфера filetype значение, он затем ищет файл, ~/.vim/ftplugin/ который ему соответствует.
Например: если вы запустите [ set filetype=derp ] Vim будет искать [~/.vim/ftplugin/derp.vim]. Если этот файл существует, то он его запустит.
Vim также поддерживает подкаталоги ~/.vim/ftplugin/. Чтобы продолжить наш пример [:set filetype=derp] также заставит Vim запустить все *.vim файлы внутри каталога ~/.vim/ftplugin/derp/. Это позволяет вам разделить логику плагина в ftplugin на логические группы.
Поскольку эти файлы [ filetype ] запускаются каждый раз , когда устанавливается буфер, то они должны быть установлены только как локальные параметры буфера! Если параметры убудут установлены глобально то они перезапишут значения во всех открытых буферах!
~/.vim/indent/
Файлы в ~/.vim/indent/ очень похожи на файлы из ftplugin . Они так же загружаются на основе их имен.
indent файлы должны устанавливать параметры, связанные с отступами для их типов файлов, и эти параметры должны быть локальными для буфера.
Да, вы могли бы просто поместить этот код в папку ftplugin , но лучше отделить его, чтобы другие пользователи Vim поняли, что вы делаете. Это всего лишь соглашение, но, пожалуйста, будьте внимательным автором плагина и следуйте ему.
~/.vim/compiler/
Файлы в ~/.vim/compiler/ работают точно так же, как indent файлы. Они должны устанавливать параметры, связанные с компилятором, в текущем буфере на основе их имен.
Не беспокойтесь о том, что означает "параметры, связанные с компилятором". Мы рассмотрим это позже.
~/.vim/after/
~/.vim/after/ Этот каталог своего рода хак. Файлы в этом каталоге будут загружаться при каждом запуске Vim, но после файлов из ~/.vim/plugin/
~/.vim/autoload/
~/.vim/autoload/ Это каталог невероятно важный хак. Хотя это звучит намного сложнее, чем есть на самом деле.
В двух словах: [ autoload ]это способ отложить загрузку кода вашего плагина до тех пор, пока он действительно не понадобится. Мы рассмотрим это более подробно позже, когда будем проводить рефакторинг кода нашего плагина.
~/.vim/doc/
Наконец, ~/.vim/doc/ это каталог, куда вы можете добавить документацию для своего плагина. Vim уделяет большое внимание документации (о чем свидетельствуют все :help команды, которые мы выполняли), поэтому важно документировать ваши плагины.
Упражнения
Убедитесь, что вы понимаете (очень грубо), что делает каждый каталог, о котором мы говорили.
Найдите некоторые плагины Vim, которые вы используете, и посмотрите, как они структурируют свои файлы.
| ч42 создание полноценного плагина | Содержание | ч44 макет плагина с Pathogen |