2016-09-12 6 views
0

vim-snipmateのMATLAB functionスニペットを記述しようとしています。プレースホルダへの複数の参照を含むVimスニペットが機能しない

snippet fun                 
    function [ ${1:returnVals} ] = ${2:name}(${3:args})      
    % ${2:name}              
    % what does the function do? 
    % ${3:args}              
    %                   



end 

これは私がfunを入力し、テンプレートが生成されます]タブを打ったときのように動作します:スニペットは、次のようになります。

return変数を入力してもう一度Tabキーを押すと、2番目のプレースホルダは編集用にマークされませんが、returnValsフィールドにタブ文字が挿入されます。

コメントプレースホルダを削除すると、スニペットが機能します。

関数名と引数を取得してコメントに入れる方法はありますか?

+1

私はあなたが第二と第三のプレースホルダ用の2つのジャンプ位置を持っているそのためだと思います。ミラーは '$ {2:name}'と '$ {3:args} 'ではなく' $ 2'と '$ 3'でなければなりません。 – dNitro

+0

@dNitro素晴らしいです!それを説明する答えを書いたら、私はそれを受け入れます。ロマインからのものは動作しますが、どんな種類の説明も欠いています... –

+1

@ Dr.Nefario私の編集を参照してください。 – romainl

答えて

2

${n}の表記を使用して、には、のないプレースホルダが定義されています。

${n:foo}の表記は、タブストップのプレースホルダを定義するために使用されます。

$n表記は、対応するタブストップに挿入された値を反映するために使用されます。

スニペットでは、$nでミラーリングする代わりに、2番目と3番目のタブストップを${n:foo}で再定義します。ここで

は、スニペットの修正バージョンです:

snippet fun                 
    function [ ${1:returnVals} ] = ${2:name}(${3:args})      
    % $2              
    % what does the function do? 
    % $3              
    % 
    ${4} 
    end 
関連する問題