如何使用 Yasnippet printf
How to use Yasnippet printf
我最近看了 this fantastic video 如何在 Emacs 中使用 Yasnippet。
有人可以解释一下如何使用这个片段吗?
具体而言,if
和 string-match
elisp conditionals/functions 就此代码段的预期用途做了什么?
此片段可在 Yasnippet c++-mode > printf.
中找到
# -*- mode: snippet -*-
# name: printf
# key: printf
# --
printf("${1:%s}\n"${1:$(if (string-match "%" yas-text) ", " "\);")
}${1:$(if (string-match "%" yas-text) "\);" "")}
因此,如果您可以将其正确加载到模式中,它应该可以工作(有一些 yasnippet 模式无法为我正确加载——如果所有其他方法都失败了,在片段文件本身中使用 M-x yas-load-snippet-buffer
看看是否可行。)
至于宏,第二个参数基本上以包含“%”符号的第一个参数为条件。如果是,则在结束引号后插入一个逗号,然后您跳到那里,点击您正在编辑的字符串中的制表符。如果其中任何地方都不包含 %,则将其删除。换句话说:
如果您在第一个参数(字符串)中键入没有 %s 的“hello world”,您会得到:
printf("hello world\n");
没有要填写的第二个值。但是,如果您添加 %s,当您点击 Tab 时(我在其中键入 CURSORHERE ):
printf("hello %s\n", CURSORHERE));
我最近看了 this fantastic video 如何在 Emacs 中使用 Yasnippet。
有人可以解释一下如何使用这个片段吗?
具体而言,if
和 string-match
elisp conditionals/functions 就此代码段的预期用途做了什么?
此片段可在 Yasnippet c++-mode > printf.
中找到# -*- mode: snippet -*-
# name: printf
# key: printf
# --
printf("${1:%s}\n"${1:$(if (string-match "%" yas-text) ", " "\);")
}${1:$(if (string-match "%" yas-text) "\);" "")}
因此,如果您可以将其正确加载到模式中,它应该可以工作(有一些 yasnippet 模式无法为我正确加载——如果所有其他方法都失败了,在片段文件本身中使用 M-x yas-load-snippet-buffer
看看是否可行。)
至于宏,第二个参数基本上以包含“%”符号的第一个参数为条件。如果是,则在结束引号后插入一个逗号,然后您跳到那里,点击您正在编辑的字符串中的制表符。如果其中任何地方都不包含 %,则将其删除。换句话说:
如果您在第一个参数(字符串)中键入没有 %s 的“hello world”,您会得到:
printf("hello world\n");
没有要填写的第二个值。但是,如果您添加 %s,当您点击 Tab 时(我在其中键入 CURSORHERE ):
printf("hello %s\n", CURSORHERE));