我有一个名为
Quick Log Write-Host
的代码片段,定义如下:
"Quick Log Write-Host": {
"prefix": ["quicklog"],
"body": [
"Write-Host -f Green \"`$TM_SELECTED_TEXT:\" $TM_SELECTED_TEXT"
],
"description": "Quick Log"
},
然后我将一个键绑定定义为
ctrl+q
,如下所示:
{
"key" : "ctrl+q",
"command" : "editor.action.insertSnippet",
"args" : { "name": "Quick Log Write-Host" },
"when" : "editorTextFocus && editorLangId == powershell"
},
现在,当我选择一个变量并按
ctrl+q
时,它会将其转换为日志字符串,以便我在运行脚本时可以轻松检查该变量的值。它只是一个有用的调试工具。
一个简单的例子:
$MyObjectCollection | % {
$_
}
# Now I select "$_" and press "Ctrl+q", and the code becomes:
$MyObjectCollection | % {
Write-Host -f Green "`$_:" $_
}
当我想快速检查变量时,这很有用。
但它不适用于多项选择。
我希望能够选择多行并一次在每一行上执行相同的命令。
我想做的是从这个开始:
$HArrMemberType.GetType()
$HArrMemberType.GetType().BaseType
$HArrMemberType.GetType().FullName
$HArrMemberType.GetType().Name
$HArrMemberType.GetType().IsEnum
$HArrMemberType.GetType().IsValueType
$HArrMemberType.GetType().MemberType
然后选择以上所有内容,按快捷键,然后让该快捷键将我的选择转换为:
Write-Host -f Green "`$HArrMemberType.GetType():" $HArrMemberType.GetType()
Write-Host -f Green "`$HArrMemberType.GetType().BaseType:" $HArrMemberType.GetType().BaseType
Write-Host -f Green "`$HArrMemberType.GetType().FullName:" $HArrMemberType.GetType().FullName
Write-Host -f Green "`$HArrMemberType.GetType().Name:" $HArrMemberType.GetType().Name
Write-Host -f Green "`$HArrMemberType.GetType().IsEnum:" $HArrMemberType.GetType().IsEnum
Write-Host -f Green "`$HArrMemberType.GetType().IsValueType:" $HArrMemberType.GetType().IsValueType
Write-Host -f Green "`$HArrMemberType.GetType().MemberType:" $HArrMemberType.GetType().MemberType
有谁知道这种转换是否可以在不编写我自己的 VSCode 扩展的情况下实现?是通过扩展,还是一些原生 VSCode 快捷方式设置?
任何帮助将不胜感激!
如果您的文本像您所显示的那样是连续的,那么此键绑定将起作用:
"key": "ctrl+q",
"command": "runCommands",
"args": {
"commands": [
"editor.action.insertCursorAtEndOfEachLineSelected",
"cursorHomeSelect",
{
"command": "editor.action.insertSnippet",
"args": {
"name": "Quick Log Write-Host"
// "snippet": "Write-Host -f Green \"`$TM_SELECTED_TEXT:\" $TM_SELECTED_TEXT" // or this
}
}
]
},
"when": "editorTextFocus && editorLangId == powershell"
},
关键是首先使用
editor.action.insertCursorAtEndOfEachLineSelected
cpmmand“分割”行,然后片段将逐行应用。