我正在尝试编写一个sublime函数,该函数将获取当前文件并在ConEmu的新shell中运行它,我在转义a\t时遇到一些问题
当我有一条看起来像
抄送:\ps\测试.ps1在
t掉下来了,我试着做一些事情来逃避它,但是没有任何运气。在
这是崇高函数class ConemuPstestCommand(sublime_plugin.TextCommand):
def run(self, edit):
if self.view.file_name():
if self.view.is_dirty():
self.view.run_command("save")
folder = path.dirname(self.view.file_name())
testFile = path.join(folder, "test.ps1")
if(not (path.exists(testFile))):
testFile = path.join(path.split(folder)[0],"test.ps1")
if(path.exists(testFile)):
testFile = testFile + "\n"
print(testFile)
testFile = re.sub(r'\t', r'\\t', testFile)
#testFile = testFile.translate(str.maketrans({"\t": r"\\\t","\\": r"\\"}))
print(testFile)
subprocess.call([CONEMUC, "-GUIMACRO:0","Task(""{Shells::PowerShell}"")"],startupinfo=si)
#subprocess.call([CONEMUC, "-GUIMACRO:0","Recreate(0,0,0)"],startupinfo=si)
subprocess.call([CONEMUC, "-GUIMACRO:0", "PASTE", "2", testFile], startupinfo=si)
基本的想法是,如果你在powershell模块中点击F6,它将运行ps1.1测试在那个文件夹里。根据这两个print(testFile),sublime控制台中的输出看起来是正确的,当它转到powershell时,t on test丢失了(奇怪的是,\仍然存在)
真正奇怪的是,如果我注释掉Task()(新的powershell控制台)行,它会将它正确地复制到当前控制台(相同的conemu任务类型)
Im运行版本150513[64]和sublime 3(3083)
{1美元^
作为一个简单的测试,我从一个conemu控制台运行了这段python代码
^{pr2}$
这将很好地启动控制台,但不会打印文本
Python版本也是
python3.4.2(v3.4.2:ab2c023a9432,2014年10月6日,22:16:31)[MSC v.1600 64位(AMD64)]
一个更简单的测试,我启动了一个cmdshell并运行了这个命令ConEmuC.exe -guimacro task("{Shells::cmd}");context;print("test")
它将报告OK;OK;OK
新的shell被打开,test被打印在我运行它的控制台中。所以看起来上下文并没有真正做到它应该做的事情?在
我刚试过另一个简单的测试ConEmuC.exe -guimacro Create(0,0);context;print("test")
这次它工作正常。似乎Task()和Context不想一起工作?在
看起来好像
不太确定这是conemu正在做的事情还是崇高/python方面的事情。有什么想法吗?在
谢谢