Можем ли мы использовать несколько файлов фрагментов для данного типа файла в vim? - PullRequest
10 голосов
/ 02 августа 2011

При использовании snipmate + vim возможно ли иметь много файлов сниппетов загрузить для данного языка / тип файла?

Ex: snipmate поставляется с javascript.snippets Я также загрузил фрагменты mootools и добавил это в свой vimrc: autocmd FileType javascript set ft=javascript.mootools

Теперь я могу использовать

  • Акции js snippets
  • фрагменты mootools

Я хочу добавить третий набор фрагментов javascript.myCustomSnippets, который будет также загружать для типа файла javascript.

Когда я пытаюсь добавить свои пользовательские фрагменты, используя что-то вроде этого autocmd FileType javascript set ft=javascript.myCustomSnippets он перезаписывает / отключает фрагменты mootools, однако фрагменты javascript по умолчанию продолжают работать.

Как мне это сделать, или это возможно?

ps: я знаю, что мог бы просто добавить свои фрагменты в файл фрагментов javascript по умолчанию, но, поскольку у меня есть синхронизация репозитория gipub snipmate внутри моей папки .vim/bundle/, я хочу отделить личные вещи от живых Сделки рЕПО.

Мое решение

Конкретным решением, которое в конечном итоге привело к тому, что мои файлы работали бок о бок, было структурирование моих файлов следующим образом (кстати, я использую pathogen для автоматической загрузки bundle dir)

~/.vim/bundles/
    snipmate.vim/snippets/javascript.snippet
    vim-snippets.mootools/snippets/mootools.snippet
    vim-snippets.myCustomSnippets/snippets/javascript.snippets

Назвав мой файл "javascript.snippets", он автоматически загружается вместе со значениями по умолчанию.

Ответы [ 5 ]

17 голосов
/ 02 августа 2011

Руй Диаз прав насчет личных вещей, вы можете хранить все свои собственные фрагменты в "~ / .vim / snippets", и у вас не будет проблем с репозиторием на github.Если это не работает для вас, переменная g:snippets_dir может иметь неправильное значение - просто установите ее явно в ваших vimfiles.

Что касается объединения нескольких фрагментов, вы можете использовать функцию ExtractSnipsFile.Это должно делать то, что вы хотите, не возиться с точечным синтаксисом типа файла.

Допустим, у вас есть следующие три файла фрагментов, все в вашем каталоге фрагментов:

  • javascript.snippets
  • mootools.snippets
  • myCustomSnippets.snippets

Создайте файл "after / plugin / snippets.vim" и поместите в него следующее:

call ExtractSnipsFile(g:snippets_dir.'javascript.snippets', 'javascript')
call ExtractSnipsFile(g:snippets_dir.'mootools.snippets', 'javascript')
call ExtractSnipsFile(g:snippets_dir.'myCustomSnippets.snippets', 'javascript')

Это свяжет все эти фрагменты с типом файла javascript, явных автокоманд не требуется.Для получения дополнительной информации вы можете попробовать :help ExtractSnipsFile.

4 голосов
/ 02 августа 2011

Создайте папку фрагментов внутри вашего каталога .vim и поместите туда свои фрагменты. Создайте там файл с именем javascript.snippets, и у вас должны быть в наличии как фрагменты фрагмента кода, так и ваши собственные.

2 голосов
/ 17 июня 2014

Просто для дальнейшего ознакомления: h snipMate заявляет: extends: расширяет фрагменты заданных типов файлов.

extends c, cpp, objc

это будет включать все фрагменты для указанных типов файлов.И просто поместите свой собственный файл сниппета в ~ / .vim / snippets / objc.snippet

1 голос
/ 08 января 2012

Да, конечно. Сначала используйте github.com/MarcWeber/vim-addon-manager, чтобы не пропустить изменения в верхнем потоке. Снайпер М. Сандера был разветвлен, потому что он никогда не отвечал на электронные письма о запросах на слияние. Вот почему я и Гарбас улучшили его. Новую версию можно найти по адресу github.com/garbas/vim-snipmate.

.

У вас есть глобальный словарь scope_aliases, который можно использовать для связи типов файлов с файлами фрагментов. Таким образом, вы можете легко добавить поддержку фрагментов js в html-файлы, основываясь на личных предпочтениях. Есть еще некоторые изменения, но я устал их повторять.

0 голосов
/ 06 февраля 2012

Поскольку вы используете pathogen, все, что вам нужно сделать, - это добавить пользовательскую папку Snippets в каталог bundles. Например:

~/.vim/bundles/mySnippets/snippets/php.snippets

...