Github: https://github.com/honza/vim-snippets
snipMate&UltiSnipスニペット
このリポジトリには、さまざまなプログラミング言語用のスニペットファイルが含まれています。
コミュニティで管理されており、多くの人が既にスニペットファイルやその他の改善に貢献しています。
内容
-
snippets/*
:snipMate形式を使用するスニペット -
UltiSnips/*
:UltiSnipsフォーマットを使用したスニペット
vim-snippetsをサポートするスニペットエンジン
スニペットエンジンにはさまざまなフォークがあり、ユーザーはスニペットの名前を入力してスニペットを挿入することができます。
- github.com/SirVer/ultisnips :
pythonは、このリポジトリ内のすべてのスニペットをサポートしています。 - github.com/garbas/vim-snipmate :
VimL、snipmate-snippets、エンジンは時には奇妙な動作をします。 スニペットをサポートしています/ * - github.com/Shougo/neosnippet :
VimLは、いくつかの設定でスニペット/ *をサポートしています。 - github.com/drmingdrmer/xptemplate :完全に異なる構文ですが、このファイルに含まれているスニペットを読み取ることはありませんが、非常に強力です。 vim-snippetsをサポートしていません(完全性のためにここにリストするだけです)
より包括的なリスト(不完全なものです)がここで試行されます: http : //vim-wiki.mawercer.de/wiki/topic/text-snippets-skeletons-templates.html
UltiSnipsには、高速、ネスティングスニペット、スニペットでのスニペットの拡張などの追加機能があり、スニペット内のテキスト(ビジュアル選択やプレースホルダテキストなど)に強力な変換機能があります。
どちらを使うの? もしあなたがPythonを持っていれば、 SirVer / ultisnipsには高速であり、最も多くの機能があるので試してみてください。
あなたがVimL(PythonをサポートしていないVim)しか持っていない場合は、 garbas / vim-snipmateを使い、エンジンで見つかったマイナーなバグに対処してください。
Q:「UltiSnipsに賛成して非難されるべきですか?
A:いいえ、snipMateはVimLで、UltiSnipsにはPythonが必要です。 PythonをサポートするVimをインストールしなくてもスニペットを使いたい人もいます。 はい – これは吸う。
解決策の1つは、スニペットを十分に使用しているが、UltiSnipsでオーバーライドできるようにすることです。 これにより、ほとんどのユーザーに依然としてサービスを提供しながらほとんどの重複が回避されます。 AFAIKには、snipMateのネストされたプレースホルダブランチもあります。 snipMateはAdnan Zafarによって改善されています。 だから、時間はまだ最終決定を下す準備ができていないかもしれません。
ベンダースニペット
追加のライブラリとフレームワークスニペットは、 UltiSnips/
ディレクトリ内のUltiSnips/
ユーザーに提供されています。 これらのファイルは、すべてが自動的にロードされないように、デフォルトの言語名前空間から削除されます。 別のライブラリ、フレームワーク、またはサポートしたいパッケージがある場合は、プルリクエストを開きます。
現在のバッファに追加のスニペットを追加するには、 :UltiSnipsAddFiletypes
コマンドの後に、スニペット名の末尾に「スニペット」を付けないでください。 たとえば、JavaScript Jasmineスニペットを追加するには、 :UltiSnipsAddFiletypes javascript-jasmine
ます。 このスニペットをJavaScriptファイルを開くか作成するたびにロードするには、 – .vim/ftplugin/javascript.vim
ファイルにコマンドを追加します。 別の方法は、あなたの.vimrc
autocmd FileType js UltiSnipsAddFiletypes javascript-jasmine
を追加する.vimrc
です。
詳細は、UltiSnipsドキュメント( :help UltiSnips
)を参照してください。
インストール
最初に、多くのオプションがあることに注意してください。上記の「スニペットエンジン」を参照してください。 もう一度 、Marc Weberがどこでも同じ繰り返し情報を繰り返すのは理にかなっていないと考えている理由は、 たくさんのプラグインマネージャーがいることに気づくはずです。
推奨される方法: vim-addon-manager (これはまさにこの理由でMarc Weberが書いたので、単純な依存関係管理をサポートしているからです)。 例えば、あなたは.vimrc
この行で完了しています:
" assuming you want to use snipmate snippet engine
ActivateAddons vim-snippets snipmate
vim-piプラグインマネージャとリポジトリリソースについて議論する場所です。
snipmateのインストール方法については、 snipmate @ garbasを参照してください。
(Bundle、Pathogen、git clone – 人々がctrl-f検索でこのリンクを見つけられるようにするためのキーワード)スニペットエンジンのドキュメントを読んで、私の.vimrc
ペーストをコピーさせてください 。
トラブル
これをうまく動作させることができない場合は、GitHubチケットを作成してください。IRCまたはメーリングリストに問い合わせてください。
寄稿者の方針/
ほとんどの言語で便利なスニペットもありますので、同じトリガーを使用してみましょう:
if : if without else
ife: if $1 else $2
eif : else if ($1) { .. }
el : else ..
wh : while (cond) ...
次のような無用なプレースホルダデフォルトテキストを追加しないでください。
if (${1:condition}){
${0:some code here}
}
代わりに以下を使用します。
if (${1}){
${0:${VISUAL}}
}
例外:Vimのmatchall()
、 matchstr()
関数のように、頻繁に使用されない関数は、ヒントを使用すると、順序を記憶するのに役立ちます。 VimLの場合、関数補完機能を持つvim-devプラグインを入手する
したがって条件(while … if)とブロックボディは$ {N}を使用します – ありがとう
スニペットを使用して既存のコードをラップすることができます${VISUAL}
開いている質問:それではもしあれば、1行はどうでしょうか?else if .. \ n .. then \ n … \ n else \ n ..? 追加するポリシーはどれですか? https://github.com/honza/vim-snippets/issues/230で議論する
折りたたみマーカー : vim-snipmate
でさらに作業が行われるまで、折りたたみマーカーをスニペットに追加しないでください。 vim-snipmate
は、すべてのスニペットをvim-snipmate
にパッチする方法に関するコメントがあります。
現在、UltiSnipsのすべてのスニペットがUltiSnipsに入れられています。マージに関するいくつかの作業が完了している必要があります(重複の削除など)。 上記のエンジンセクションも参照してください。
関連するリポジトリ
また、特定のユースケースに対してスニペットのセットを維持して、すべてのユーザーがその恩恵を受けるようにすることをお勧めします。 人々はスニペットリポジトリをここにリストすることができます:
- https://github.com/rbonvall/snipmate-snippets-bib(BibTeXファイルのスニペット)
- https://github.com/sudar/vim-arduino-snippets(Arduinoファイルのスニペット)
- https://github.com/zedr/zope-snipmate-bundle.git(Python、TAL、ZCMLのスニペット)
- https://github.com/bonsaiben/bootstrap-snippets(HTMLとHamlのTwitterのブートストラップマークアップのスニペット)
- https://github.com/sniphpets(PHP、Symfony 2/3、Doctrineなどの高度なスニペット)
VAMを使用したインストール: https : //github.com/MarcWeber/vim-addon-manager
未来 – アイデア – 例
概要スニペットエンジンあなたがアイデアを持っている場合は、それらをスニペットエンジンの機能のリストに追加することができます。
ヒストリカルノート
vim-snipmateはもともとMichael Sandersによって開始されましたが、残念ながらこのプロジェクトを中止しました。 Rok Garbasは現在、既存のコードベースを改善するためにプロジェクトのフォークを維持しています。
バージョン/方言/ ..
新しい言語バージョンには、古いものよりも他のスニペットが必要な場合があるなど、いくつかの問題があります。 これが存在する場合は、現在これを行うことをお勧めします:
- snippets / ruby.snippets(共通スニペット)を追加する
- snippets / ruby-1.8.snippetsを追加する(1.8のみ)
- snippets / ruby-1.9.snippetsを追加する(1.9のみ)
次のようにhttps://github.com/garbas/vim-snipmateを設定します 。
let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['ruby'] = 'ruby,ruby-rails,ruby-1.9'
代わりにruby-1.8スニペットを必要とするプロジェクトで作業する場合は、 vim-addon-local-vimrc
を使用してファイルタイプを上書きすることを検討してください。
もちろん、各ルビライブラリバージョンのトリプレットごとに新しいファイルを作成するのは意味がありません。 時には、名前の後ろに
migrate_lib_20_down
migrate_lib_20_up
構文が変更された場合はそれを行います。
言語管理者
誰も本当にすべてのプログラミング言語に堪能ではありません。 言語のスニペットを維持したい場合は、お気軽にお問い合わせください。
注:人々はスニペットに興味があり、その関心は再び低下する可能性があります。 このリストは、ベストエフォートに基づいて最新の状態に保たれています。
- エリクシル – lpil 、 iurifq
- ファルコン – ステベノ
- HTML Django – honza
- Javascript – honza
- マークダウン – ホンザ
- PHP – chrisyue
- Python – honza
- Ruby – taq
- Scala – gorodinskiy
- スーパーコライダー – lpil
ライセンス
元のsnipMateプラグインと同様、すべてのスニペットはMITライセンスの条件に基づいてライセンスされています。