如果你在 Windows 上运行 Anaconda,你有一个activate.bat
以这一行结尾的文件,将你当前的 conda env 放在提示符上:
set PROMPT=[%CONDA_DEFAULT_ENV%] $P$G
如果你在 windows 上运行 cmder,有一个很好的 lua 脚本可以自定义你的提示:
function lambda_prompt_filter()
clink.prompt.value = string.gsub(clink.prompt.value, "{lamb}", "λ")
end
clink.prompt.register_filter(lambda_prompt_filter, 40)
这两个脚本不能很好地相互配合。 Clink 有一个 API,看起来我可以用来合并来自 的更改activate.bat
,但我不知道如何从批处理文件中调用它。
我的总体目标是将这两个提示合并到更好的 Cmder 样式中。我的想法是创建一个环境变量,更改activate.bat
以检查变量是否存在,如果存在,则调用 Clink API 来更改提示而不是set PROMPT
. 那时我想我可以创建一个新的过滤器来干净地合并值。不过,我不知道如何从批处理文件中调用 API。
欢迎其他解决方案。
编辑:部分,非工作解决方案
require "os" -- added to top of file, rest in filter function
local sub = os.getenv("CONDA_DEFAULT_ENV")
if sub == nil then
sub = ""
end
print(sub)
clink.prompt.value = string.gsub(clink.prompt.value, "{conda}", sub)
我在一开始的提示定义中添加了一个{conda};从 中删除提示语句activate.bat
,并将其添加到git_prompt_filter
. 在使用激活之前,一切都很好 -{conda}
被''
. 但是,如果我使用 activate 并切换到带有 git repo 的文件夹来触发更改,我会看到:
{conda}C:\...
没有os.getenv
得到用户设置的变量?不知道还有什么问题。我也尝试添加一个打印,它不会打印出CONDA...
任何一个的内容。