我想创建一个键盘快捷键,打开一个终端选项卡,然后运行一个包含文件名的命令。我已经尝试使用multi-command
与Terminal 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"
},