2011-01-11 16 views
13

Gdy jestem w pliku html.erb, nie otrzymuję wycinków snipMate.Vim html.erb snippets ?? snipMate Potrzebujesz porady vim

Chciałbym zarówno HTML, jak i Ruby, lub po prostu HTML byłoby w porządku, Jak to zrobić?

Czy muszę napisać zestaw fragmentów?

Jeśli tak, czy istnieje sposób na wyciągnięcie istniejących fragmentów bez ich kopiowania?

Czy jest sposób, aby vim przejść do trybu html, gdy widzi .html erb?

Odpowiedz

12

Fragmenty są przechowywane w katalogu o nazwie snippets gdzieś w folderze ~/.vim.

Jeśli tam spojrzysz, zwykle istnieje jeden plik na typ pliku, jest tam c.snippets, ruby.snippets, więc wydaje się, że musisz utworzyć plik erb.snippets z tym, co chcesz.

Ostatecznie możesz skopiować zawartość ruby.snippets i html.snippets do swoich nowych erb.snippets.

Alternatywnie możesz wyszukać na github, niektórzy ludzie napisali własną konfigurację erb.snippets. Na przykład jest tam fajna kolekcja: https://github.com/scrooloose/snipmate-snippets

Najlepiej byłoby najpierw spróbować otworzyć plik urywka i zajrzeć do składni, całkiem łatwo jest stworzyć własny fragment w zależności od tego, z czego korzystasz najbardziej .

+0

Niesamowite dzięki .. erb-rails brakuje w tagach html, więc po prostu skopiuję je! Dzięki. –

+0

jak to działa? Dodałem erb.snippets do folderu snippets i dodałem kilka fragmentów, ale nadal jest napisane "Nie znaleziono wzorca", podczas gdy snipmate działa doskonale z .crb i innymi plikami obsługiwanymi przez native. – Sergey

+0

Wygląda na to, że musi być refaktoryzowany przez https://github.com/scrooloose/snipmate-snippets/blob/master/ruby-rails/defcreate.snippet. Wolę używać reply_with, więc pracuję nad kilkoma nowymi fragmentami. – kgpdeveloper

17

Możesz użyć parametru autocmd, aby ustawić typ pliku na html podczas otwierania pliku ".html.erb". Może to mieć niepożądane skutki uboczne dla wtyczek, które działają dla plików ".erb".

autocmd BufNewFile,BufRead *.html.erb set filetype=html 

Można również załadować więcej niż jeden zestaw fragmentów za pomocą przerywana filetype:

autocmd BufNewFile,BufRead *.html.erb set filetype=html.eruby 

Zobacz :help snippet-syntax w pomocy snipMate aby uzyskać więcej informacji.

+0

Bądź ostrożny z tym. Składnia została pomięta: https://dl.dropbox.com/u/750013/SS_2012-11-01_21%3A27%3A41.png. – robertokl

3

użyłem metody AUTOCOMMAND do zestawu typu pliku, ale wtedy mam html błędy składni dla rzeczy tak:

<%= image_tag("logo.png", :alt => "Sample App", :class => "round") %> 

ostatnich dwóch wsporników kątowych zostaną podświetlone na czerwono, co mnie pojechaliśmy Bonkers. Stworzyłem więc dowiązanie symboliczne o nazwie eruby.snippets, które wskazuje na html.snippets. To działało jak mistrz i teraz nie muszę wprowadzać zmian w dwóch miejscach. Mam również katalog ułamków eruby-rails dla nie-html eruby snippets.

To jest w systemie Mac OS X. Zwróć uwagę, że alias nie będzie działać. Musisz uderzyć w terminal i użyć polecenia ln. Nie jestem pewien co zrobić w systemie Windoze.

8

Obecnie jestem na trasie promującej dla UltiSnips na StackOverflow. UltiSnips popiera rozszerzenie innych typów plików, twoje erb.snippets będzie wyglądać następująco: skrypt

extends html, ruby, rails 

snippet temp "A snippet only in Erb" 
erb rules ${1} 
endsnippet 

Konwersja do fragmentów snipMate jest dostarczany z UltiSnips, więc przełączanie jest łatwe.

+0

Dlaczego więc nie uwzględnić tego rozszerzenia w ultisnips na eruby? –

+1

Nie wiem nic o rubinach, erubach, erbach ani żadnych innych materiałach związanych z kodowaniem html lub sieciowym. A więc - muszę polegać na użytkownikach dostarczających tutaj użyteczne definicje urywków i pliki .snippet. Możesz wysłać łatkę. – SirVer

2

Można przypisać zakresy wielu fragmentów do pojedynczego rodzaju pliku. (Odkryłem, że zmiana rodzaju pliku ma tendencję do przełamywania podświetlania składni).

Można sprawdzić, czy typ pliku dla plików ERB jest rzeczywiście „eruby” z:

:set filetype? 

Jeśli używasz maintained fork of snipmate, wygląda na to będziemy chcieli zarówno eruby.snippets i eruby- rails.snippets z repozytorium snipmate-snippets (własność honza, ale nie mam wystarczającej reputacji, aby linkować do niego tutaj) (zobacz sekcję INSTALL snipmate README dla właściwej konfiguracji).

Jeśli używasz utrzymany widelec, wierzę ustawienie G: snipMate.scope_aliases w .vimrc z poniższych będzie działać na swoim przykładzie:

let g:snipMate = {} 
let g:snipMate.scope_aliases = {} 
let g:snipMate.scope_aliases['eruby'] = 'eruby,eruby-rails' 

Dodałem pull request do snipmate mieć zaktualizowano ich dokumentację.

1

Przeskakiwanie po łączu UltiSnips po wypróbowaniu SnipMate przez chwilę. Tak jak wspomniane przez SirVer, posiadanie html, ruby, itp. Fragmentów dostępnych w pliku *.erb było tak proste jak dodanie przedłużenia do pliku eruby.snippets.

0

z oryginalnym snipMate wtyczki, należy utworzyć plik ~/.vim/ftplugin/erb_snippets.vim i umieścić w nim następujący:

silent call ExtractSnipsFile(g:snippets_dir . 'html.snippets', &l:filetype) 
silent call ExtractSnipsFile(g:snippets_dir . 'ruby.snippets', &l:filetype)