如何将当前日期/时间添加到clink / cmder提示符


12

我对通过出色的cmder软件包进行的clink相当满意。我唯一思念是设置命令提示符以显示当前的日期/时间(和最后退出代码,历史数,在一个简单的方法...等)。bash

有人可以为我指出正确的方向吗?


您可以使用Windows date /t吗?同样,Windows将最后一个退出代码存储在中%errorlevel%,而sh使用$?。试试看。
鲍勃·

但是如何将输出整合到提示中呢?我不想date /t每次都运行一些长时间运行的命令之前运行。
Zsolt Botykai 2014年

哦。去看看prompt /?,那里有一个日期和时间选项。同样,这是标准的Windows命令提示符-我不知道碰杯或cmder会做什么。
鲍勃

Answers:


9

尝试此提示设置(仅作为示例,它显示了如何在“提示打印”中调用任何控制台应用程序)。注意!它仅在ConEmu中工作。

prompt $p$s$e]9;7;"cmd /c echo (%DATE% %TIME%)"$e\$g

但是,正如鲍勃所说,有一种更简单的方法:

prompt $p$s$d$s$t$s$g

并且对于cmder您,应编辑提供的内容init.bat,以定义提示设置。


对于cmder,建议的编辑提示设置的方法是in %CMDER_ROOT%\config\user-startup.cmd而不是init.bat
wegry

在Cmder的win7上,添加$t为我完成了窍门:@prompt $E[1;32;40m$P$S{git}{hg} $t$S$_$E[1;30;40m{lamb}$S$E[0m
Benj 2016年

@wegry这个%CMDER_ROOT%\config\user-startup.cmd文件似乎对我的配置没有任何影响。也许我做错了。

@Benj起初似乎也对我不起作用,但是稍后重新启动它呢?我对开始工作的方式感到困惑。
挪威

2
在2018年,我努力prompt cmd /c echo ($t$s) :$p$guser-profile.cmd文件添加到Windows10中。
Edwin

10

Maximus提供的答案不再适用于cmder 1.3+

您必须在cmder文件夹中使用自定义定义(源)创建一个.lua文件(例如my_prompt.lua config

在我的自定义下方:

function custom_prompt()
  cwd = clink.get_cwd()
  prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m{time}\n{lamb} \x1b[0m"
  new_value = string.gsub(prompt, "{cwd}", cwd)
  add_time = string.gsub(new_value, "{time}", os.date("%x - %X"))
  clink.prompt.value = string.gsub(add_time, "{lamb}", "λ")
end

clink.prompt.register_filter(custom_prompt, 1)

这就是结果提示

C:\
03/25/17 - 20:56:14
λ

您可以在Lua手册中找到有关时间输出的更多自定义选项


更新评论已报告错误

function time_prompt()
    os.setlocale ("", "time")
    local cwd = clink.get_cwd()
    local prompt = "\x1b[1;32m{cwd} {git}{hg} \n\x1b[30m{time}\n{lamb} \x1b[0m"
    local new_value = string.gsub(prompt, "{cwd}", cwd)
    local add_time = string.gsub(new_value, "{time}", os.date("%x - %X"))
    clink.prompt.value = string.gsub(add_time, "{lamb}", "λ")
end

Maximus的答案是正确的,但这是最好的答案!
代理

D:\Tools\cmder\config\my_prompt.lua:1: unexpected symbol near char(255) 提示如下:`1:26.51)“←\`
Devil's Advocate

嗯,我不知道那是什么,但是再次检查我的lua文件,它与我发布的旧代码不完全相同,请告诉我使用我现在更新的代码是否可以正常工作。
Gruber

@Edwin在Maximus回答中的评论对我有用。 prompt cmd /c echo ($t$s) :$p$ginuser-profile.cmd
Devil's Advocate

仅此一项就不会改变cmder中我git bash提示符上的任何内容。cmder是否应在启动时读取并执行config文件夹中的所有.lua文件?
AsGoodAsItGet

0

cmder的一行修改。将其放入cmder \ config \ my_config.lua

function my_prompt_filter()
    cwd = clink.get_cwd()
    prompt = "\x1b[1;32;40m{cwd}{git}{hg} $> \x1b[33;40m"
    new_value = string.gsub(prompt, "{cwd}", cwd)
    clink.prompt.value = string.gsub(new_value, "{lamb}", "λ")
end

clink.prompt.register_filter(my_prompt_filter, 1)

结果:

C:\Users\user1 $>
C:\Users\user1 $> date
The current date is: 02.02.2018
C:\Users\user1 $>

0

这里没有任何解决方案对我有用,因此我最终在我的代码中添加了以下行.bashrc

alias myprompt='export PS1="\[\e]9;9;"\w"\007\e]9;12\007\]\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]\[\033[32m\]\u@\h \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\] \D{%T}\nλ "'

最后一部分\D{%T}显示当前时间(不必关心日期,因为通常我需要知道自开始一项任务以来经过了多少时间)。

当然,这不会自动更改所有git bash终端上的提示。您必须myprompt在默认提示符下执行命令才能对其进行更改。我试图在.bashrc文件中进行上述导出,但出现错误。也许有人会对如何解决这个问题有更好的主意。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.