【发布时间】:2017-03-03 19:19:56
【问题描述】:
我想知道 Visual Studio 代码中 console.log 的快捷方式是什么?
【问题讨论】:
标签: typescript visual-studio-code
我想知道 Visual Studio 代码中 console.log 的快捷方式是什么?
【问题讨论】:
标签: typescript visual-studio-code
2019 年 2 月更新:
如Adrian Smith等人建议:如果要绑定键盘快捷键创建控制台日志语句,可以这样做:
{
"key": "ctrl+shift+l",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"snippet": "console.log('${TM_SELECTED_TEXT}$1')$2;"
}
}
按CTRL+SHIFT+L会输出控制台sn-p。此外,如果您已经选择了文本,它将被放在日志语句中。
如果你更想要智能/自动完成:
转到 Preferences -> User Snippets -> 选择 Typescript(或您想要的任何语言)或“全局片段文件”,具体取决于根据您的需要。 json 文件应该打开。你可以在那里添加代码sn-ps。
console.log 的 sn-p 已被注释掉:
"Print to console": {
"scope": "javascript,typescript,javascriptreact",
"prefix": "log",
"body": [
"console.log('$1');",
"$2"
],
"description": "Log output to console"
}
过去您必须对每种语言都执行此操作,但现在在“全局片段文件”中,您可以设置 scope 属性,该属性允许您显式声明多种语言。
如果您需要语言的确切名称:单击 VS Code 底部工具栏右侧的Select Language Mode 按钮进行检查。它会在顶部提示您选择一种语言,并且在此过程中会在括号中显示该语言的 JSON 名称,您可以在 sn-p 文件中输入该名称,如上例所示。
另外,你应该设置"editor.snippetSuggestions": "top",这样你的sn-ps就会出现在intellisense之上。谢谢@Chris!
您可以在首选项 -> 设置 -> 文本编辑器 -> 建议中找到 sn-p 建议
【讨论】:
"prefix": "c", 应该可以与“c”一起使用,对吧?
{} 按钮打开keybindings.json 文件——最简单的方法是我看不到“高级自定义打开和编辑 keybindings.json" 消息!
"snippet": "console.log(\"${CLIPBOARD/[^0-9^a-z]//gi}\", ${CLIPBOARD}$1);"
@Sebastian Sebald 的最佳答案非常好,但是遇到了类似的问题(不是专门的 console.log,而是它“丢失”)我也想提供一个答案。
您的前缀确实有效 - 默认情况下为 log,在您的情况下,您已将其更改为 c。当您输入log(或c)时,VSCode 将根据许多因素(即我不知道哪些因素,可能是类相关性)生成“所有事物™”的完整列表。
像 sn-ps 这样的东西往往会被吸引到底部。要将它们推到顶部,尽管它们很长,请将其添加到您的设置中:
"editor.snippetSuggestions": "top"
【讨论】:
Property editor.snippetSuggestions is not allowed,这是怎么回事?
"editor.snippetSuggestions": "top" 应该放在 settings.json 文件中(ctrl+shift+p 并输入 user settings)或者,您可以在常规用户设置中搜索此属性(首选项>设置)并使用下拉菜单将其更改为top。
其他方法是打开 keybindings.json 文件并添加所需的组合键。在我的情况下是:
{
"key": "cmd+shift+l",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"snippet": "console.log($1)$0;"
}
}
【讨论】:
如果有人有兴趣将当前选定的文本放入console.log() 语句中:
{
"key": "cmd+shift+l",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"snippet": "console.log(${TM_SELECTED_TEXT}$1)$0;"
}
}
【讨论】:
以下是当前选中的带有单引号的文本。希望对你有帮助
// Place your key bindings in this file to overwrite the defaults
[{
"key": "ctrl+shift+c",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"snippet": "console.log('${TM_SELECTED_TEXT}$1')$2;"
}
}]
【讨论】:
以上所有答案都可以正常工作,但如果您不想更改 Visual Studio 代码的配置,而是希望自动完成 console.log(object);
您可以简单地使用此快捷方式 clg 并按 Ctrl+Space 获得建议,然后按 Enter
注意:当您安装 JavaScript (ES6) 代码 sn-ps 扩展时,此功能可用。
同样,您可以自动完成:
console.log(object);
console.log('object :', object);
console.clear(object);
console.error(object);
console.trace(object);
console.table(object);
console.info(object);
console.count(label);
参考资料:
https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets
【讨论】:
ctrl+space。没有那个建议就会出现。
这里有一个更好的解决方案
{
"key": "cmd+shift+c",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"snippet": "console.log('${TM_SELECTED_TEXT}', $TM_SELECTED_TEXT$1);"
}
}
【讨论】:
输入log 并点击enter。它将自动完成console.log();
【讨论】:
log 并按Enter 只输出console.log();,我不知道为什么?是我自己还是其他人可以输入log,然后每次输入并获得一致的console.log(); 输出?
【讨论】:
clg + 制表符
或者如上所述,
log + enter(下拉菜单中的第二个选项)
这是一个老问题,但我希望对其他人有用。
【讨论】:
ChannelMergerNode!
作为替代方案,您可以创建一个易于编写的函数来调用 console.log,然后调用该函数。
var a = funtion (x) {console.log(x)}
a(2*2); //prints 4
【讨论】:
输入 'clg' 然后点击 ctrl + space 并点击 enter,它会自动补全到console.log()。
为此,您只需要安装一个扩展,即 JavaScript (ES6) 代码 sn-ps。
【讨论】:
我不知道我使用的是什么扩展,但我只需键入 log 并点击 tab 以自动完成 console.log();将光标放在大括号之间。
【讨论】:
输入 co 并点击 tab 或 enter。
应该开箱即用。
【讨论】:
console
我使用autohotkey来达到同样的效果, 只需键入“cc”然后空格,它就会输出一个控制台日志。没试过sn-ps,不知道对比如何
; vscode
#IfWinActive ahk_exe Code.exe
SetTitleMatchMode 2
; Move by word - Backwards
Capslock & d:: Send ^+k
::cc::console.log("test321:" {+}){left}
::cl::logger.info("test321:" {+}){left}
::cd::logger.debug("test321:" {+}){left}
::ss::JSON.stringify(test, null, 2){ctrl down}{left 3}{ctrl up}
#IfWinActive
【讨论】:
打印变量的值非常简单,但也是非常重复和频繁需要和完成的事情,因此需要最快的快捷方式!
所以我推荐另一种解决方案,您甚至不需要选择任何东西。您也不需要复制/粘贴变量的名称,也不需要输入 sn-p 的前缀。 它也适用于所有语言,只需一个热键! :)(感谢 vscode 的“when”表达式)
以下是您必须采取的安装步骤:
从扩展商店安装multi-command 扩展。
打开您的 vscode 的 settings.json 文件(如果您不知道如何操作,请按 Ctrl + Shift + p。这将在顶部打开一个命令面板。在其中写入“首选项:打开设置(JSON)”,然后按 Enter!)然后将以下项目添加到其中(将解释):
// generating a print statement of the current word on the next line, in different languages
"multiCommand.commands": [
{
"command": "multiCommand.jsGeneratePrint",
"sequence": [
"editor.action.addSelectionToNextFindMatch",
"editor.action.clipboardCopyAction",
"editor.action.insertLineAfter",
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "console.log(\"$CLIPBOARD: \", $CLIPBOARD);"
}
},
]
},
{
"command": "multiCommand.javaGeneratePrint",
"sequence": [
"editor.action.addSelectionToNextFindMatch",
"editor.action.clipboardCopyAction",
"editor.action.insertLineAfter",
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "System.out.println(\"$CLIPBOARD: \" + $CLIPBOARD);"
}
},
]
},
],
keybindings.json 文件(在命令面板中写这个:“Preferences: Open keyboard Shortcuts (JSON)”)并添加以下项目(将解释):
{
"key": "ctrl+b",
"command": "multiCommand.jsGeneratePrint",
"when": "editorTextFocus && editorLangId == javascript"
},
{
"key": "ctrl+b",
"command": "multiCommand.javaGeneratePrint",
"when": "editorTextFocus && editorLangId == 'java'"
}
瞧!,我们完成了。现在,只需将指针放在变量名上并点击 ctrl+b(我对 ctrl+b 很满意,但您可以随意更改)。
您也可以通过重复相同的模式来扩展此方法以涵盖任何其他语言(它也可以通过其他方式进行扩展,但我不会再做这个答案了)。希望这会为您节省一些时间。 :)
【讨论】:
如果您使用的是 VSCode,另一种选择是使用 Turbo 控制台日志 扩展,它不仅可以启用快捷方式,还可以根据您选择的文本巧妙地插入自定义文本。您可以调整它的设置以记录文件名/行号:
显然,安装扩展程序与更改键盘快捷键不同,但如果您想要类似于 @aderchox 的答案的功能,这是一个不错的选择
【讨论】:
我学会了Turbo Console Log 的第一个功能(II、III、IV 对我没用)。
然后添加了这个非常适合 Turbo 控制台日志的 sn-p:
{
"key": "ctrl+alt+l",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus && !editorHasSelection",
"args": {
"snippet": "console.log('$1')"
}
}
【讨论】: