2013-08-29 3 views
0

я спросил об этом ранее здесь: Add the % on tab when working with HAML on vimДобавление% к тегу автоматически в Haml и только в Haml

Решение там было хорошо, но оказывается, что вызов функции также срабатывает в типах файлов SCSS ,

Вот что я в настоящее время:

function! s:haml_settings() 
    iabbrev h1  %h1 
    iabbrev p   %p 
    iabbrev section %section 
endfunction 

autocmd BufNewFile,BufRead *.haml setlocal filetype=haml 
autocmd FileType haml call <sid>haml_settings() 

Я довольно новыми для VIM поэтому, пожалуйста, простите меня, если я задать Noobie вопрос.

Как я могу убедиться, что эта функция вызывается только в файлах HAML? Или, если это невозможно, как я могу переназначить его, чтобы он срабатывал только при нажатии option-space перед данным тегом? Я нахожусь на mac, поэтому у меня есть ключ опции.

Другими словами: мне бы хотелось, чтобы я мог нажать p<space>, тогда выход будет %p (с пробелом после него). Или я хотел бы нажать p<option><space> и получить его то же самое %p)

У меня есть всплывающий плагин vim-haml, но он не обеспечивает такую ​​функциональность.

Спасибо!

ответ

1

Вы должны сделать ваши аббревиатуры локальными для буфера:

iabbrev <buffer> h1 %h1 

Или попробуйте сниппета двигатель как snipmate или utisnips.

+0

PERFECT! Это именно то, что мне нужно. Спасибо. – DavidVII

+0

Похоже, что это не работает после обновления до vim 7.4.22. Я не имею понятия почему? – DavidVII

+0

Итак, это перестало работать после того, как я обновился до 7.4. Я не смог понять, что произошло. Любые указатели? Я бы очень признателен за любую помощь. Thnx! – DavidVII

0

Я ответил на свой вопрос, но я поделюсь с другими на случай, если они тоже наткнутся на это.

Похоже, что плагин Auto Pairs был виновником. Как только я отключил этот плагин, пробел работал нормально с сокращениями.

Я обнаружил это на :verbose imap <space>, который указал мне прямо на источник проблемы.

+0

Моя конкретная проблема в том, почему он не работал раньше. – DavidVII