我正在尝试用当前的崇高文本3 $project_path文件夹打开我最喜欢的git应用程序的键绑定,但是Sublime 3并没有将变量转换成实际路径。
在下面您可以找到我当前的键盘绑定文件。
[
{
"keys": ["super+ctrl+alt+g"],
"command": "exec",
"args":
{
"shell_cmd": "open -a Gitbox $project_path"
}
}
]$project_path不会转换成实际的项目路径..。我做错了什么?我应该使用“构建系统”来代替吗?我研究了构建系统,但问题是您必须选择一个文件范围(例如*.rb),并且我希望这个键盘快捷方式对我的所有项目/文件都有效。
在textmate2中,通过在捆绑编辑器中创建一个新的“命令”并为其指定一个快捷方式,可以很容易地实现相同的快捷方式。然后命令如下:
#!/usr/bin/ruby
exec "open -a Gitbox '#{ENV['TM_PROJECT_DIRECTORY']}'"因此,我试图在崇高的文本3中实现同样的目标,但有些地方出了问题。
谢谢!
发布于 2015-07-06 09:13:51
编辑:
同时,我构建了一个通用插件,它允许您使用键笔或命令选项板打开任何外部应用程序。这个插件可以在这里找到:ExternalTools
您可以通过命令调色板cmd+shift+p轻松安装它。
在这种情况下,您可以转到Preferences / Key绑定并添加以下内容:
{
"keys": ["super+ctrl+alt+g"],
"command": "external_tools_run",
"args": { "cmd": ["open", "-a", "Gitbox", "$project_path"] }
} 我仍然没有一台mac电脑,所以它有可能不能正常工作。在这种情况下,如果您能给我一个反馈(参见问题),我会很高兴的。
原始答案:
我花了几个小时研究同样的问题。毕竟,我决定用自己的位置持有者创建一个小插件。
import sublime, sublime_plugin
class RunAppCommand(sublime_plugin.WindowCommand):
def run(self, app_args):
app_args = self.fill_placeholder(app_args)
self.window.run_command("exec", {"cmd": app_args } )
def fill_placeholder(self, args):
res = []
proj_folder = self.get_project_folder()
for arg in args:
arg = arg.replace("$PROJECT_FOLDER", proj_folder)
res.append(arg)
return res
def get_project_folder(self,default=None):
proj_folder = ""
if self.window.project_file_name():
proj = self.window.project_data()
proj_folder_obj = self.get_first(proj["folders"])
if proj_folder_obj:
proj_folder = proj_folder_obj["path"]
elif self.window.folders():
proj_folder = self.get_first(self.window.folders())
if not proj_folder:
sublime.status_message("No project folder located")
return default
return proj_folder
def get_first(self, iterable, default=None):
if iterable:
for item in iterable:
return item
return default在将上面的代码保存到包/User/RunApp.py之后,只需将以下内容添加到Default.崇高-keymap中,就可以使命令工作:
{ "keys": ["super+ctrl+alt+g"], "command": "run_app", "args": { "app_args": ["open", "-a", "Gitbox", "$PROJECT_FOLDER"]}}这可能不是最好的解决办法,但它对我有效。
发布于 2017-02-08 10:11:22
也花了几个小时在这里搜索-感谢fboers的例子,我终于可以自己创建一个插件。
因此,我的解决方案是:exec2 -扩展所有的高级变量,然后将其转发给exec。
将其保存为Packages/Exec2/Exec2.py。
import sublime
import sublime_plugin
class Exec2Command(sublime_plugin.WindowCommand):
def run(self, cmd):
new_cmd = [sublime.expand_variables (value, self.window.extract_variables()) for value in cmd]
self.window.run_command("exec", {"cmd": new_cmd } ) 键绑定示例:
{ "keys": ["ctrl+F7"], "command": "exec2", "args" : { "cmd": ["V:/v4_tools/v4Doccer.exe", "--mdi", "${file}"]} },https://stackoverflow.com/questions/26800761
复制相似问题