2011-01-11 67 views
13

當我在一個html.erb文件中,我沒有得到snipMate片段。Vim html.erb snippets ?? snipMate需要一個vim的提示

我想HTML和Ruby,或只是HTML會好, 我該怎麼做?

我需要寫一組片段嗎?

如果是這樣,有沒有辦法拉動現有的片段而不復制它們?

當看到.html erb時,有沒有告訴vim進入html模式的方法?

回答

12

片段存儲在您的~/.vim文件夾中某處的snippets目錄中。

如果你看那裏,通常每個文件類型有一個文件,有一個c.snippets,一個ruby.snippets,所以你似乎要做的就是在那裏用你想要的創建一個erb.snippets。

最終,您可以將ruby.snippets和html.snippets的內容複製到新的erb.snippets中。

或者你可以在github上搜索,有些人已經發布了他們自己的erb.snippets配置。例如,有一個很好的收集在那裏: https://github.com/scrooloose/snipmate-snippets

最好的事情是先嚐試打開一個片段文件,看看語法,這是很容易創建自己的片段取決於你最使用什麼。

+0

真棒謝謝.. erb-rails缺少html標籤,所以我只需將它們複製到!謝謝。 – 2011-01-11 15:01:33

+0

你是怎麼做到的?我已經將erb.snippets添加到片段文件夾並添加了一些片段,但仍然顯示「未找到模式」,而snipmate完全可以與.c .rb和其他本機支持的文件完美匹配。 – Sergey 2011-10-17 11:57:49

17

打開「.html.erb」文件時,您可以使用autocmd將文件類型設置爲html。這可能會對用於「.erb」文件的插件產生不必要的副作用。

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

您還可以通過使用點文件類型加載多個一組片段的:

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

:help snippet-syntax在snipMate幫助更多信息。

+0

注意這一點。語法高度弄亂了:https://dl.dropbox.com/u/750013/SS_2012-11-01_21%3A27%3A41.png。 – robertokl 2012-11-01 23:28:43

3

我使用了自動命令的方法來設置的文件類型,但後來我得到了這樣的事情HTML語法錯誤:

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

最後兩個尖括號會以紅色突出顯示,這驅使我瘋狂。所以,我創建了一個名爲eruby.snippets的符號鏈接,指向html.snippets。這就像一個冠軍,現在我不需要在兩個地方進行更改。我還爲非html eruby片段提供了eruby-rails片段目錄。

這是在Mac OS X系統上。請注意,別名不起作用。您需要點擊終端並使用ln命令。不確定在Windoze系統上這樣做。

8

我目前正在StackOverflow上推廣UltiSnips。 UltiSnips支持擴展其他類型的文件,你的erb.snippets應該是這樣的:對於snipMate片段

extends html, ruby, rails 

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

A轉換腳本附帶UltiSnips,所以切換容易。

2

您可以將多個片段作用域分配給單個文件類型。 (我發現改變文件類型往往會破壞一些語法高亮)。

您可以檢查再培訓局的文件的文件類型的確是「eRuby的」有:

:set filetype? 

如果您使用的maintained fork of snipmate,它看起來像你想同時得到eruby.snippets和eruby-來自snipmate-snippets存儲庫的rails.snippets(由honza擁有,但我沒有足夠的聲望鏈接到此處)(請參閱snipmate README的INSTALL部分以進行正確設置)。

如果您使用的是保持叉,我相信設置g:與下面你的.vimrc snipMate.scope_aliases會爲你的工作,例如:

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

我添加了一個pull request到snipmate有其文檔已更新。

1

在嘗試SnipMate一段時間後跳上UltiSnips潮流。就像SirVer提到的那樣,在*.erb文件中提供html,ruby等片段就像將延長線添加到eruby.snippets文件一樣簡單。

0

與原snipMate插件,創建一個文件~/.vim/ftplugin/erb_snippets.vim,並把下列它:

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