我最近观看了这段精彩的视频关于如何在Emacs中使用Yasnippet的节目。
有人能解释一下如何使用这个片段吗?
具体来说,对于这个片段的预期用途,if和string-match的条件/函数是做什么的?
这个片段可以在Yasnippet c++模式> printf中找到。
# -*- mode: snippet -*-
# name: printf
# key: printf
# --
printf("${1:%s}\\n"${1:$(if (string-match "%" yas-text) ", " "\);")
}$2${1:$(if (string-match "%" yas-text) "\);" "")}发布于 2021-05-25 21:28:25
因此,如果您可以正确地将其加载到模式中(有几个yasnippet模式未能为我正确加载--如果所有其他模式都失败了,那么在代码片段文件本身中使用M-x yas-load-snippet-buffer并查看它是否有效),它就会工作。
对于宏,第二个参数基本上取决于第一个包含"%“号的参数。如果是,则在结束引号之后插入逗号,然后从正在编辑的字符串跳转到点击选项卡。如果它在任何地方都不包含%,那么它将被删除。换言之:
如果您在第一个参数(字符串)中键入"hello world“而没有%s,则得到:
printf("hello world\n");没有第二个值来填写。但是,如果您添加了%s,那么在单击选项卡(我输入CURSORHERE的位置)时,将光标放在,之后以填充第二个:
printf("hello %s\n", CURSORHERE)); https://stackoverflow.com/questions/67695426
复制相似问题