在Sublime Text 2中使用参数构建和运行

29

我正在使用 macOS X 操作系统,并且使用 Sublime Text 2 进行编写代码。

我发现使用 command + B 可以进行构建,而使用 command + shift + B 可以进行构建和运行。

是否可以运行程序(或脚本)并传递参数。例如:

myProg arg1 arg2
注意:我使用多种编程语言(C ++,Java,Python),因此我希望有一种方法可以为每个项目设置参数,而不是所有构建都设置参数。
编辑:
我想设置程序调用的参数,有点像在Eclipse中运行程序时可以设置参数一样。
3个回答

26

对于每个项目,您可以创建一个 .sublime-project 文件,并在其中设置特定的build_system

{
  "folders":
  [{
    "path": "src"
  }],
  "build_systems":
  [{
    "name": "Run with args",
    "cmd": ["python", "$file", "some", "args"]
  }]
}

这样做可以避免污染全局的“构建系统”菜单,而且在切换项目时也不必担心切换构建系统。同时,当你需要更改参数时,这个文件也很容易访问:

Cmd-Shift-P > Edit Project

1
伙计,如果我们每次需要传递动态参数,那么最好的方法是什么呢? - Venkatesh Nadar
动态是什么意思?您在这里拥有完全访问shell的权限,可以将您的“动态”内容存储在文件中,并在Sublime Build中静态读取它。 - OlivierBlanvillain
例如,如果您想运行Node.js的npm安装程序来安装underscore,则可以输入命令“npm install underscore”,但是下一次如果您想加载express,则可以输入命令“npm install express”。因此,我的疑问是,我们是否有通过键盘选择参数并将其用于加载节点模块的功能,就像我们在查找文件中的文本时所拥有的功能一样。例如:选择文件中的任何文本,然后按Ctrl + F。您将在查找面板中找到它。 - Venkatesh Nadar

19

InputArgs可以精确地实现您所需的功能。每次运行构建(ctrl+b)时,它都会显示一个输入对话框,并且您可以从sublime text中提供用空格分隔的参数。


4
当你按下Ctrl+Shift+B,弹出对话框时,它会执行每个人都期望的操作。它非常完美,并处理提供的命令历史记录(向上推)。非常感谢! - m3nda
我刚刚在一个node.js构建系统中尝试了这个,如果我传递一系列由空格分隔的参数,我会得到它们作为一个大参数:例如,如果我想模拟node program.js 1 2 3,当我在对话框中输入1 2 3时,我得到的是一个单独的字符串1 2 3,而不是3个单独的字符串参数。 - Jim Jarrett

9
我发现一个简单的解决方案是在同一目录下创建一个Python文件:
import os
os.system("python filename.py some args")

那将是我的备选方案(不总是在sublime下),但需要一些调整,如检查os.argv并可能使用raw_input来询问许多args,然后使用os.execv()而不是os.system()启动。 - m3nda
这是一种棘手而简单的方法,可以使用参数运行您的Python脚本。这个建议对我非常有帮助,谢谢。 - Евгений Па

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接