首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >snip.rv中的Vim use代码片段tabstop输出为字符串,如何在其中使用制表位?

snip.rv中的Vim use代码片段tabstop输出为字符串,如何在其中使用制表位?
EN

Stack Overflow用户
提问于 2019-12-29 16:11:02
回答 2查看 130关注 0票数 1

我猜核心代码是

代码语言:javascript
复制
snip.rv='\`\`\`mermaid\n graph $1'+out+'\`\`\`'

我想在snip.rv中使用tabstop $1,如果可能的话,在var输出中使用。

完整的代码如下所示:

代码语言:javascript
复制
snippet '(?<!\\)([0-9])([0-9])gtb' "graphy" r
$1`!p 
x=match.group(1)
y=match.group(2)
row1=""
for i in range(int(x)):
    row1+=" -->"
row1+="\n"
out=int(y)*row1
snip.rv='\`\`\`mermaid\n graph $1'+out+'\`\`\`'
`$0
endsnippet
EN

回答 2

Stack Overflow用户

发布于 2019-12-29 23:03:21

您在代码片段中使用了Python interpolation (`!p ...`),并且UltiSnips不会在嵌入式Python代码本身中执行任何占位符替换。(由于许多与转义Python术语和字符串相关的原因,这样做会有问题。)

相反,UltiSnips将在t变量中导出占位符,您可以在Python代码中访问该变量。

有关Python插值块中的可用变量,请参阅the docs,其中包括:

代码语言:javascript
复制
t   - The values of the placeholders, t[1] is the text of ${1}, etc.

因此,您实际上可以在代码行中使用t[1]作为Python变量,如下所示:

代码语言:javascript
复制
snip.rv='\`\`\`mermaid\n graph '+t[1]+out+'\`\`\`'
票数 1
EN

Stack Overflow用户

发布于 2019-12-30 16:29:37

谢谢你的帮助,我终于知道我可以

代码语言:javascript
复制
snip.expand_anon(anon_snippet_table)

得到我想要的方法

代码语言:javascript
复制
def create_gtable(snip):    
    # retrieving single line from current string and treat it like tabstops count
    placeholders_string = snip.buffer[snip.line].strip()
    rows_amount = int(placeholders_string[0])
    columns_amount = int(placeholders_string[1])

    # erase current line
    snip.buffer[snip.line] = ''

    # create anonymous snippet with expected content and number of tabstops
    anon_snippet_title = "\`\`\`mermaid\n graph "+'$1' + "\n"
    anon_snippet_end="\`\`\`"
    anon_snippet_body = ""
    for row in range(1,rows_amount+1):
        anon_snippet_body += ' -> '.join(['$' + str(row*columns_amount+col+1) for col in range(1,columns_amount+1)]) + "\n"
    anon_snippet_table = anon_snippet_title+ anon_snippet_body+anon_snippet_end

    # expand anonymous snippet
    snip.expand_anon(anon_snippet_table)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59517785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档