2

snipMateプラグインに新しいスニペットを作成しようとしています。

私は(すなわち)myfile.endfileと呼ばれるいくつかのファイルを操作します

すべての.endfileファイルには、.htmlファイルのような同じ「スニペット」が必要です。だから私はしました

cp html.snippet endfile.snippet

私の〜/ .vim/snippetsディレクトリにあります。

SnipMateは現在のすべてのスニペットで動作しますが、新しく作成したスニペットでは動作しません。この問題に対する提案はありますか?

(ところで:新しい.snippetファイルを作成した後:helptags ~/.vim/doc、vimインスタンスでコマンドを実行しました。)

4

3 に答える 3

10

これは、Snipmateがfiletype特定のタイプのファイルを開くときに設定されるVimオプションであるを使用するためです。

たとえば、開いている場合、「index.html」filetypeは自動的にに設定されhtmlます。

それがどのように機能するかを確認するには、次のようにします。
:e $VIMRUNTIME/filetype.vim

予備テストとして、次のことができ
ます。1.test.endfileを開く
2.入力:set ft=endfileまたは:set filetype=endfile
3.定義したスニペットが機能するかどうかを確認する

これを行うには、.vimrcに以下を自動的に追加します。
au BufNewFile,BufRead *.endfile set filetype=endfile

これは、filetypeオプションで終わる新しいファイルを読み取るか作成するたびにendfile、endfileに設定されることを意味します。

(ファイルタイプは任意の文字列であり、ファイル拡張子と同一である必要はありません)

于 2010-12-20T10:50:48.160 に答える
4

ファイルタイプを変更せずにスニペットを割り当てることができます(ファイルタイプを変更すると構文の強調表示が壊れるため、これは望ましいことです)。

snipmateの維持されたフォークでこれを行う適切な方法は、g:snipMate.scope_aliasesを設定することだと思います。

あなたの例では、'endfile.snippet'ファイルがあると仮定すると、.vimrcに以下を追加するとうまくいくと思います。

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['html'] = 'endfile'

filetype ='html'のファイルに対してhtmlスニペットとendfileスニペットの両方を機能させる場合は、次を使用します。

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['html'] = 'html,endfile'

ドキュメントを更新するためにsnipmateにプルリクエストを追加しました。編集:これでマージされました。

于 2012-01-07T22:19:46.800 に答える
0

珍しいname.endfileを持つスニペットを使用する場合は、グローバルスニペットを使用すると便利です。

スニペットをスニペットフォルダ内の_.snippetsファイルに配置すると、グローバルになり、すべてのファイルタイプでアクセスできるようになります。

たぶんこれは質問への直接の答えではありませんが、同様の問題を抱えている多くのユーザーはこれが便利だと思うでしょう。特に、すべてをさまざまなファイルに整理する必要がなく、どこからでもアクセスできる1つのファイルに独自のスニペットを含めることができる場合は特にそうです。

于 2015-11-27T19:58:50.800 に答える