打开当前目录下的终端窗口并运行命令的键盘快捷键



我想创建一个键盘快捷键,打开一个终端选项卡,然后运行一个包含文件名的命令。我已经尝试使用multi-commandTerminal Here在以下方式:

"multiCommand.commands":[
{
"command": "multiCommand.formatLaTeX",
"interval": 750,
"sequence":[
"workbench.action.files.save",
"terminalHere.create",
{
"command": "workbench.action.terminal.sendSequence",
"args": {"text": "pdftex -ini -jobname="${fileBasenameNoExtension}" "&pdflatex" mylatexformat.ltx ${fileBasename}u000D"},
}
]
}
]

保存文件,在同一目录下的新窗口中打开终端,然后尝试运行命令。

当我使用"normal"字符不包括文件名,即没有${fileBasename},它工作得很好。

当我使用文件名时,我如何使它工作?例如,如果我在foo.tex中工作,我希望它运行命令

pdftex -ini -jobname="foo" "&pdflatex" mylatexformat.ltx foo.tex

,然后执行。

让这个键绑定(在keybindings.json),如果它工作,你可以把它变成一个设置,如果你愿意-显然我不能测试你的确切的shell命令:

{
"key": "ctrl+shift+/",
"command": "extension.multiCommand.execute",
"args": {
"interval": 750,
"sequence": [
"workbench.action.files.save",
"workbench.action.terminal.new",
{
"command": "workbench.action.terminal.sendSequence",
"args": {"text": "cd '${fileDirname}' && echo  Howdy u000d"}
}
],
},
"when": "editorTextFocus"
},

同样,你应该像这样包装你的变量,其中可能有空格:'${fileDirname}',等等。用shell命令替换echo...,看看它是否有效。

可能需要将两个shell命令拆分为两个单独的命令,以便在新目录下运行第二个命令:

{
"key": "ctrl+shift+/",
"command": "extension.multiCommand.execute",
"args": {
"interval": 750,
"sequence": [
"workbench.action.files.save",
"workbench.action.terminal.new",
{
"command": "workbench.action.terminal.sendSequence",
"args": {"text": "cd '${fileDirname}'u000d"}
},
{
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "echo '${fileDirname}'u000d"  // this does work for me
}
},
],
},
"when": "editorTextFocus"
},

最新更新