带有多个对占位符的引用的Vim-snippet不起作用

时间:2016-09-12 08:19:58

标签: vim

我正在尝试为function编写一个MATLAB vim-snipmate代码段。该片段如下所示:

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



 end 

这与我键入fun时一样,按Tab键生成模板。

但是,在输入返回变量并再次点击Tab后,第二个占位符没有被标记为编辑,但Tab字符被插入returnVals字段。

如果我删除评论占位符,则代码段可以正常工作。

有没有办法获取函数名称和参数并将它们放在注释中?

1 个答案:

答案 0 :(得分:2)

${n}表示法用于定义不带占位符的制表位

${n:foo}表示法用于定义带有占位符的制表位

$n表示法用于镜像在相应制表位插入的值。

在您的代码段中,您使用${n:foo}重新定义第二个和第三个制表位,而不是使用$n镜像它们。

以下是您的代码段的固定版本:

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