我想在sublime文本2中构建haml而不切换到iterm。所以我为sublime构建了一个简单的插件,就像这样。
import os
import sublime, sublime_plugin
class HamlToHtmlCommand(sublime_plugin.TextCommand):
def run(self,edit):
source = self.view.file_name()
filefullname = source.split('/')[-1]
filename = filefullname.split('.')[0]
target = "/".join(source.split('/')[0:-1])
com = "haml " + source + " > " + target + "/" + filename +'.html'
os.system(com)
def is_enabled(self):
return True
但问题是,当我构建sublime时,目标html文件为空。 例如,“com”是“haml /Users/latpaw/login_register/login.haml /Users/latpaw/login_register/login.html”。但是如果在python cli中执行os.system(com),那就是对了 那么这里真正发生了什么
答案 0 :(得分:0)
顺便说一句,我真的不认识Haml,所以一开始我只是试图修复你的代码。但我认为你可以直接从ST建立Haml,转到Tools→Build
(⌥B)。或者创建一个新的构建系统Tools→Build Systems→New build system
。显然,您可以使用以下变量:
显然您遇到路径转义问题。当我尝试的时候,你必须有一个位于文件路径某处的空间。或者您可能知道像cat ~/Sublime Text/test
这样的命令效果不佳。你可以:
cat ~/Sublime\ Text/test
cat ~/'Sublime Text/test'
我会建议晚些时候这样做:
com = "haml '" + source + "' > '" + target + "/" + filename +"'.html"
PS:可以说,更好的解决方案是在定义源,目标和文件名时直接添加这些单引号。