Почему не работает vim-snipmate UltiSnips для Django?

Я использую Vim 8.0.124 и установил подключаемый модуль vim-snipmate для использования в моей разработке Python и Django. Я следовал инструкциям, создав файл .vimrc, содержащий следующее:

# ~/.vimrc
set nocompatible        " Required by Vundle
filetype off            " Required by Vundle

" Begin Vundle settings ==========================================================
"
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

Plugin 'VundleVim/Vundle.vim'
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'tomtom/tlib_vim'
Plugin 'garbas/vim-snipmate'
# Optional
Plugin 'SirVer/ultisnips'
Plugin 'honza/vim-snippets'

call vundle#end()
filetype plugin indent on
"
" End Vundle settings ==========================================================

" SnipMate
autocmd FileType python set ft=python.django
autocmd FileType html set ft=htmldjango.html

" UltiSnips
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
let g:UltiSnipsEditSplit="vertical"

Установка vim-snipmate включает создание следующих четырех файлов:

~/.vim/bundle/vim-snippets/snippets/django.snippets
~/.vim/bundle/vim-snippets/snippets/htmldjango.snippets
~/.vim/bundle/vim-snippets/UltiSnips/django.snippets
~/.vim/bundle/vim-snippets/UltiSnips/htmldjango.snippets

У меня есть два вопроса. Во-первых, почему сниппеты UltiSnip Django не работают? Фрагменты в snippets/django.snippets работают, а в файле UltiSnips django.snippets — нет. Если я открою файл test.py и наберу «fdate», где fdate должен превратиться в Django DateField, ничего не произойдет (кроме ввода вкладки). Первоначально, когда UltiSnips не работал, я зашел на его страницу Github и прочитал инструкции, которые, казалось, указывали, что я должен добавить плагин SirVer, что я и сделал. Даже тогда, похоже, не работает. Я должен добавить, что то, что вы видите выше, — это весь мой файл .vimrc. Кроме того, я создал совершенно новый каталог ~/.vim, который содержит только пакеты Vundle и vim-snipmate, чтобы не было никаких других конфликтов.

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


person Jim    schedule 11.07.2017    source источник


Ответы (2)


Вы пытались использовать ":setfiletype htmldjango"? или ":selfiletype django" (https://www.vim.org/scripts/script.php?script_id=1487)

person 2001    schedule 17.06.2018

Взгляните на документы, особенно в разделе 4.1.1 Как фрагменты загружено UltiSnips-как-сниппеты-загружаются

У меня была аналогичная проблема, я создал отдельный каталог для фрагментов в $HOME/UltiSnips. Там я создал каталог python, куда переместил файлы python.snippet и django.snippet. Точно так же вы можете создавать каталоги для других языков и использовать фрагменты для других фреймворков.

Из документов:

UltiSnips перебирает каталоги определений фрагментов в поисках файлов с именами, соответствующими следующим шаблонам: ft.snippets, ft_.snippets или ft/, где «ft» — это «тип файла» текущего документа, а «*» — это подстановочный знак, похожий на оболочку, соответствующий любой строке, включая пустую строку.

person Arthur Sult    schedule 15.12.2019