如何在VSCode runCommands中延迟20毫秒执行后续命令?
解决VSCode中异步命令后添加延迟执行的问题
VSCode原生的runCommands不支持命令间的延迟,它会按顺序同步触发命令,不会等待异步命令完成。要实现先执行vscode-neovim.send,延迟20ms后再执行editor.action.formatSelection,可以借助command-runner扩展运行自定义JavaScript代码来实现延迟逻辑。
步骤1:安装command-runner扩展
在VSCode扩展市场搜索并安装command-runner(一款轻量的自定义命令/脚本运行工具)。
步骤2:配置自定义延迟命令
打开settings.json(快捷键Ctrl+,后点击右上角的编辑图标),添加以下配置:
"command-runner.commands": { "my.delayedFormat": "javascript:(async () => { await vscode.commands.executeCommand('vscode-neovim.send', '<a-p>'); await new Promise(resolve => setTimeout(resolve, 20)); await vscode.commands.executeCommand('editor.action.formatSelection'); })()" }
这段代码会先执行vscode-neovim.send命令,等待其异步操作完成后,延迟20毫秒,再执行格式化命令。
步骤3:修改快捷键绑定
打开keybindings.json(快捷键Ctrl+K Ctrl+S后点击右上角的编辑图标),替换原配置为:
{ "key": "alt+p", "command": "command-runner.run", "args": { "command": "my.delayedFormat" }, "when": "editorTextFocus && neovim.init" }
按下Alt+p时,就会按预期顺序执行命令,确保异步命令完成后再执行格式化操作。
内容的提问来源于stack exchange,提问作者gaoqiang
相关产品推荐
相关产品推荐

