vim html.erbスニペット?? SnipmateにはVIMチップが必要です
-
09-10-2019 - |
質問
HTML.ERBファイルにいるとき、Snipmateのスニペットはありません。
HTMLとRubyの両方が欲しいですか、それともHTMLだけで問題ありませんが、どうすればよいですか?
スニペットのセットを書く必要がありますか?
もしそうなら、それらをコピーせずに既存のスニペットを引っ張る方法はありますか?
.html erbが表示されたときに、VIMにHTMLモードに移動するように伝える方法はありますか?
解決
スニペットは、呼ばれるディレクトリに保存されます snippets
あなたのどこか ~/.vim
フォルダ。
そこを見ると、通常、Filetypeごとに1つのファイルがあり、c.snippets、Ruby.snippetsがあります。そのため、必要なものでerb.snippetsを作成する必要があるようです。
最終的に、Ruby.snippetsとhtml.snippetsのコンテンツを新しいerb.snippetsにコピーすることができます。
または、GitHubで検索することもできます。一部の人々は、独自のErb.snippets構成を投稿しました。たとえば、そこには素敵なコレクションがあります:https://github.com/scrooloose/snipmate-snippets
最初にスニペットファイルを開いて構文を見るために最善のことは、最も使用するものに応じて独自のスニペットを作成するのは非常に簡単です。
他のヒント
使用できます autocmd
".html.erb"ファイルを開くときにFiletypeをHTMLに設定します。これは、「.erb」ファイルで動作するプラグインに望ましくない副作用を伴う可能性があります。
autocmd BufNewFile,BufRead *.html.erb set filetype=html
点線のフィルタイプを使用して、複数のスニペットをロードすることもできます。
autocmd BufNewFile,BufRead *.html.erb set filetype=html.eruby
見る :help snippet-syntax
詳細については、Snipmateのヘルプで。
私は現在、プロモーションツアーに参加しています ultisnips StackOverFlowで。 UltisNipsは他のファイルタイプを拡張することをサポートしています。Snippetsは次のようになります。
extends html, ruby, rails
snippet temp "A snippet only in Erb"
erb rules ${1}
endsnippet
Snipmate Snippetsの変換スクリプトはUltisNipsで出荷されるため、切り替えは簡単です。
AutoCommandメソッドを使用してFiletypeを設定しましたが、このようなものに対してHTML構文エラーを取得しました。
<%= image_tag("logo.png", :alt => "Sample App", :class => "round") %>
最後の2つの角度ブラケットは赤で強調表示され、それが私に狂気を駆り立てました。そこで、html.snippetsを指すeruby.snippetsというシンリンクを作成しました。それはチャンピオンのように機能し、今では2つの場所で変更する必要はありません。また、非HTMLエルビースニペット用のEruby-Rails Snippetディレクトリもあります。
これはMac OS Xシステム上にあります。エイリアスが機能しないことに注意してください。端子を押して、LNコマンドを使用する必要があります。 Windozeシステムでこれを行うかどうかはわかりません。
複数のスニペットスコープを単一のフィルタイプに割り当てることができます。 (Filetypeを変更すると、いくつかの構文の強調表示が破損する傾向があることがわかりました)。
ERBファイルのFiletypeが実際に「Eruby」であることを確認できます。
:set filetype?
あなたが使用している場合 Snipmateのフォークを維持しました, 、Snipmate-Snippetsリポジトリからのeruby.snippetsとeruby-rails.snippetsの両方が必要なようです(Honzaが所有していますが、ここにリンクするのに十分な評判がありません)適切なセットアップのために、スナップメイトのreadme)。
維持されているフォークを使用している場合、次のように.vimrcのG:snipmate.scope_aliaseを設定すると思います。例では:
let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['eruby'] = 'eruby,eruby-rails'
私は追加しました リクエストをプルします スニップメイトにドキュメントを更新してください。
しばらくの間、スナップメイトを試した後、ultisnipsの時流にジャンプします。 Sirverが述べたように、HTML、Rubyなどのスニペットを使用できるようにしてください *.erb
ファイルは、拡張ラインをに追加するのと同じくらい簡単でした eruby.snippets
ファイル。
オリジナルで スナップメイト プラグイン、ファイルを作成します ~/.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)