conemu shell_ConEmu Sublime和Python在sh中加载一个文件

这篇博客讨论了作者在尝试使用Sublime Text编写一个功能,该功能能够将当前编辑的PowerShell文件(.ps1)在ConEmu的新shell中运行时遇到的问题。主要挑战在于正确转义文件路径中的制表符,并确保文件在ConEmu中正确执行。作者尝试了多种方法,包括使用正则表达式替换和Python的字符串操作,但遇到了ConEmu的Task()和Context()宏不按预期工作的情况。最后,作者提出了这个问题,寻求可能的解决方案。
摘要由CSDN通过智能技术生成

我正在尝试编写一个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方面的事情。有什么想法吗?在

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值