2015-05-13 2 views
2

Snipmate используется, чтобы развернуть фрагменты, но перестала работать. Я изменил несколько несвязанных вещей в моем vimrc, но я не знаю, что вызвало это (и у меня нет резервной копии старого файла).Snipmate больше не раскрывается

Мое исследование до сих пор:

  • вкладку Нажатие не расширяется, а вместо этого вставляет пробелы, проверьте :verbose imap:

    i <Tab>  * =TriggerSnippet()<CR> 
         Last set from ~\vimfiles\bundle\snipmate.vim\after\plugin\snipMate.vim

  • Кажется разумным, интересно, что произойдет, если я печатаю <C-R>=TriggerSnippet()<CR> вручную? Тот же результат, пробел вставлен. Weird.

  • Я отредактировал в нескольких операциях :echo в исходном коде TriggerSnippet(), по-видимому, функция не выполнена вообще?
  • Введите def в файл Python, поместите курсор на f или в поле рядом с ним введите :call TriggerSnippet(). На этот раз функция действительно работает (видимость отладки echos), но нет расширения. Но, возможно, он действительно хочет, чтобы его вызывали из режима вставки, а не из ex.
  • Запуск следующий фрагмент кода, который я нашел в this question дал пустой результат:

    fun! GetSnipsInCurrentScope() 
        let snips = {} 
        for scope in [bufnr('%')] + split(&ft, '.') + ['_'] 
         call extend(snips, get(s:snippets, scope, {}), 'keep') 
         call extend(snips, get(s:multi_snips, scope, {}), 'keep') 
        endfor 
        return snips 
    endf 
    echo keys(GetSnipsInCurrentScope()) 
    ----> []

Weird. Почему я могу запустить TriggerSnippets через команду ex, но не через <C-R>=? Что это означает, что нет определенных фрагментов? Еще важнее, как мне это исправить?

Что касается моей конфигурации, ничто в моем vimrc не упоминает Snipmate, я установил его через патоген на Vim 7.4 на Win7, он работал раньше. Я использую последнюю версию git (установленную вчера, и она сработала) Snipmate, и дерево git чиста (за исключением нескольких команд отладки, но без них они тоже не работают).

Редактировать: Обновлено после пояснения компилятора о s: переменных.

Edit 2: Плагины Я установил с помощью Возбудитель: ctrlp-ру-Сличитель ctrlp.vim, джедай-ВИМ, pytest-ВИМ-компилятор, питон-режим, snipmate.vim, syntastic , ВИМ-EasyMotion, ВИМ-беглец, ВИМ-чувствительная, ВИМ-сыщик,

+1

's:' переменные являются локальными для исходного файла, на который они ссылаются. Эта функция должна быть в файле, который имеет функцию, которая ранее определяла 's: snippets' и' s: multi_snips' –

+1

Спасибо, застрял функция в правильный файл, не найдены фрагменты ('[]'). ': set snippets_dir' имеет 2 разделенных запятой пути, и это хорошо выглядит. –

+0

Я знаю, что вы сказали, что изменения в '.vimrc' не должны быть связаны, но иногда вещи взаимодействуют неожиданными способами. Можете ли вы отправить свой '.vimrc' в свой ответ? –

ответ

0

у меня был snipmate клон из древнего хранилища установлен. Я до сих пор не знаю, почему это сработало, а потом внезапно остановилось.

Pro отзыв для других: проверьте, откуда вы взяли снайпер. Она должна быть (на момент написания):

https://github.com/garbas/vim-snipmate

Если вы используете snipmate.vim, избавиться от него и установить правильный.Обратите внимание, что новый vim-snipmate имеет несколько зависимостей, которые вам необходимо установить (см. Репозиторий github).

Если вы чейнинга вещи уже, вы могли бы также рассмотреть возможность перехода непосредственно к ultisnips, который, кажется, современный (2015) замена snipmate. Тем не менее, для этого требуется vim с поддержкой + python.

Смежные вопросы