微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Yasnippet printf 有人能解释一下如何使用这个片段吗?

如何解决如何使用 Yasnippet printf 有人能解释一下如何使用这个片段吗?

我最近观看了关于如何在 Emacs 中使用 yasnippetthis fantastic video

有人能解释一下如何使用这个片段吗?

具体来说,ifstring-match elisp 条件/函数在此代码段的预期用途方面有何作用?

代码段可在 yasnippet c++-mode > printf 中找到。

# -*- mode: snippet -*-
# name: printf
# key: printf
# --
printf("${1:%s}\\n"${1:$(if (string-match "%" yas-text) "," "\);")
}$2${1:$(if (string-match "%" yas-text) "\);" "")}

解决方法

因此,如果您可以将其正确加载到模式中,它应该可以工作(有一些 yasnippet 模式无法为我正确加载 - 如果所有其他方法都失败,则在代码段文件本身中使用 M-x yas-load-snippet-buffer 并查看如果可行。)

至于宏,第二个参数基本上以包含“%”符号的第一个参数为条件。如果是这样,则在结束引号后插入一个逗号,然后您从正在编辑的字符串中按 Tab 键跳到那里。如果它的任何地方都不包含 %,则将其删除。换句话说:

如果你在第一个参数(字符串)中输入“hello world”而没有 %s,你会得到:

printf("hello world\n");

没有要填充的第二个值。但是,如果添加 %s,当您点击 Tab 键(我在其中键入 CURSORHERE)时,光标将放置在 , 之后以填充第二个值:

printf("hello %s\n",CURSORHERE)); 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。