正则表达式作为触发器

Art*_*o E 6 regex emacs yasnippet

其中一个代码约定是在方括号和括号内包含一个空格的填充.所以list[ index ],不是list[index].添加这些空格可能很烦人,所以我尝试编写一个片段:

# name: Bracket
# key: [
# --
[ ${1:exp} ]
Run Code Online (Sandbox Code Playgroud)

当开头方括号前面有一个空格或一行的开头,而不是前面有一个标识符时,这种方法有效.我认为一种方法是将触发器设置为正则表达式:

# key: "[:ascii:]"[
Run Code Online (Sandbox Code Playgroud)

或类似的东西.这甚至可能吗?或者还有其他一些聪明的方法可以使这项工作?我正在为python编写这个,但我认为这不重要.

谢谢!

eve*_*_jr 1

小模式解决方案

\n\n

我也不得不处理这样的编码标准。我最初的解决方案与基于自动配对的@Francesco 的解决方案相同。

\n\n

然而,我实际上想在某些情况下删除此填充,因此使此\n次要模式更加灵活。我绝对建议将它与某种配对分隔符插入工具一起使用(我最喜欢的是自动配对)。

\n\n

请参阅: delim-pad

\n\n

使用 yasnippet

\n\n

继续使用 yasnippet 的原始轨迹...(顺便说一句,autopair 和 nyasnippet 都是由Jo\xc3\xa3o T\xc3\xa1vora编写的,两者都非常强大且\n灵活。向那个家伙致敬!)

\n\n

即使您将“[”识别为按键,您仍然需要保持\n按下触发键来展开代码片段。这很快就会让人感到疲倦。

\n\n

Yasnippet 还允许您直接将片段绑定到键,因此这将起作用:

\n\n
# -*- mode: snippet -*-\n# name: beginsquare\n# binding: [\n# --\n[ $0 ]\n
Run Code Online (Sandbox Code Playgroud)\n