Найти тему
Vim

VimScript 45 [ Определение типа файла ]

Оглавление

| ч44 макет плагина с Pathogen | Содержание | ч46 |

Давайте создадим файл Potion, который мы можем использовать в качестве образца при работе над нашим плагином. Создайте где-нибудь файл [ factorial.pn ] и поместите в него следующий код Potion:

factorial = (n):
total = 1
n to 1 (i):
total *= i.
total.

10 times (i):
i string print
'! is: ' print
factorial (i) string print
"\n" print.

Этот код создает простую функцию факториала и вызывает ее десять раз, каждый раз выводя результаты. Запустите его с помощью potion factorial.pn. Вывод должен выглядеть следующим образом:

0! is: 0
1! is: 1
2! is: 2
3! is: 6
4! is: 24
5! is: 120
6! is: 720
7! is: 5040
8! is: 40320
9! is: 362880

Если вы не получаете этот вывод или получаете сообщение об ошибке, остановитесь и выясните, что пошло не так. Код должен работать.

Обнаружение файлов Potion

Откройте factorial.pn в Vim и выполните следующую команду:

:set filetype?

Vim будет отобразит [ filetype= ], потому что он еще не знает, что такое .pn файл. Давайте это исправим.

Создайте ftdetect/potion.vim в репозитории вашего плагина. Поместите в него следующие строки:

au BufNewFile,BufRead *.pn set filetype=potion

Это создаст одну автокоманду: команду для установки типа [ .pn ] для файлов potion. Все довольно просто.

Обратите внимание, что мы не использовали группу автокоманд, как обычно. Vim автоматически переносит содержимое ftdetect/*.vim файлов в группы автокоманд для вас, так что вам не нужно беспокоиться об этом.

Закройте factorial.pn файл и снова откройте его. Теперь снова запустите предыдущую команду:

:set filetype?

На этот раз Vim отобразит filetype=potion ]. Когда Vim запустился, он загрузил группу автокоманд внутри ~/.vim/bundle/potion/ftdetect/potion.vim, и когда он открыл factorial.pn, сработала автокоманда установив значение filetype=potion.

Теперь, когда мы научили Vim распознавать файлы Potion, мы можем перейти к созданию плагина.

Упражнения

Прочитать :help ft. Это нормально, если вы что то не поймете.

Прочитать :help setfiletype.

Измените ftdetect/potion.vim скрипт плагина Potion для использования setfiletype вместо [ set filetype ].