Ziy*_*een 6 regex code-snippets visual-studio-code vscode-snippets
我是 VSCode 新手。考虑到代码片段,我四处寻找一种在代码片段中编写脚本的方法。我的意思是做的不仅仅是填充或转换变量。例如...
这是一个简单的片段。我将输入rci类初始值设定项。当我输入方法参数时,我希望发生作业和文档以及其他一些事情。
rci<tab>然后def initialize(a, b))导致这样的结果......
attr_reader :a
attr_reader :b
# @param a [...] ...
# @param b [...] ...
def initialize(a, b)
@a = a
@b = b
end
Run Code Online (Sandbox Code Playgroud)
是否可以?如何才能实现呢?可能有任意数量的争论。每个参数都会触发类初始值设定项的另一行。
Mar*_*ark 13
"Class Initializer": {
"prefix": "rci",
"body": [
"${1/([^,]+)([,\\s]*|)/attr_reader :$1\n/g}",
"${1/([^,]+)([,\\s]*|)/# @param $1 [...]${2:+\n}/g}",
"def initialize($1)",
"${1/([^,]+)((,\\s*)|)/\t@$1 = $1${2:+\n}/g}",
"end"
],
"description": "Initialize Class"
}
Run Code Online (Sandbox Code Playgroud)
让它适用于任意数量的方法参数的关键是将它们放入同一个正则表达式捕获组中。
然后,设置全局标志后,每个捕获组将触发替换文本。例如,/attr_reader :$1\n/g如果您有 3 个方法参数,则会触发 3 次。
${2:+\n}您将在上面的转换中看到这一点。这意味着如果存在捕获组 2,则添加换行符。正则表达式的设计使得如果参数之间存在另一个捕获组,则仅存在捕获组 2 ,。因此,最后一个参数之后的final)不会触发另一个换行符 - 因此输出与您所需的换行符输出完全匹配(但您可以轻松添加或删除换行符)。
您的输入必须采用正确的形式:
v1, v2, v3
这是一个演示:
所以再次必要的形式是 justv1 v2 v3。参数之间不需要有空格,但这样你也会得到def initialize(v1,v2,v3)没有空格的结果。
Tab在最后一个参数之后点击以触发完成。
事实证明片段非常强大!
有关使用多个参数的类似问题,请参阅VSCode 片段:将多个对象添加到类构造函数
| 归档时间: |
|
| 查看次数: |
6593 次 |
| 最近记录: |