I'm a rather happy user of clink via the great cmder package. The only thing I miss is an easy way to set the command prompt to display the current date/time (and last exit code, history number, as in bash... etc).

Could someone point me to the right direction on how to do this?

  • Can you just use the Windows date /t? Also, Windows stores the last exit code in %errorlevel%, while sh uses $?. Try those. – Bob Jan 16 '14 at 14:11
  • But how to integrate that output to the prompt? I don't want to run date /t every time before running some long-running command. – Zsolt Botykai Jan 16 '14 at 14:33
  • Oh. Go see prompt /?, there's a date and time option in there. Again, that's standard Windows command prompt - I have no idea what clink or cmder do. – Bob Jan 16 '14 at 14:43

Try this prompt settings (example only, it's show how you can call any console application inside "prompt printing"). Note! It works in ConEmu only.

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

But, as Bob said, there is an easier way:

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

And for cmder you should edit the supplied init.bat as that defines the prompt settings.

  • For cmder, the suggested way to edit prompt settings is in %CMDER_ROOT%\config\user-startup.cmd and not init.bat. – wegry Jun 30 '16 at 13:23
  • On win7 with Cmder, adding $t did the trick for me : @prompt $E[1;32;40m$P$S{git}{hg} $t$S$_$E[1;30;40m{lamb}$S$E[0m – Benj Jul 21 '16 at 9:32
  • @wegry this %CMDER_ROOT%\config\user-startup.cmd file didn't seem to have any effect on my configuration. Maybe was I doing it wrong. – Benj Jul 21 '16 at 9:33
  • @Benj It didn't seem to work for me at first either, but a restart later it did? I'm mystified by what made start working. – wegry Jul 21 '16 at 12:51
  • 2
    in 2018 for me worked prompt cmd /c echo ($t$s) :$p$g to add to the user-profile.cmd file (windows10). – Edwin Sep 12 '18 at 14:19

The answer provided by Maximus is no longer valid for cmder 1.3+

You have to create a .lua file (for ex. my_prompt.lua) inside your cmder config folder with your customized definition (source).

Below my customization:

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}", "λ")

clink.prompt.register_filter(custom_prompt, 1)

And this is the resulting prompt

03/25/17 - 20:56:14

You can find more customization options for the time output in the Lua manual

update for comment reported error

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}", "λ")
  • Maximus answer is correct, but this is the best answer! – AuthorProxy May 24 '17 at 10:28
  • D:\Tools\cmder\config\my_prompt.lua:1: unexpected symbol near char(255) and the prompt looks like: `1:26.51)"←\` – JOATMON Mar 12 '18 at 16:14
  • mmm I don't know what is that, but checking again my lua file it's not exactly as the old code I posted, tell me if using the one I'm updating now is working. – Gruber Mar 12 '18 at 21:56
  • Comment from @Edwin in Maximus' answer worked for me. prompt cmd /c echo ($t$s) :$p$g in user-profile.cmd – JOATMON Jul 10 '19 at 21:07
  • This alone doesn't change anything on my git bash prompt in cmder. Is cmder supposed to read and execute all .lua files in the config folder at startup? – AsGoodAsItGets Jan 28 '20 at 17:36

One line modification for cmder. Put it to 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}", "λ")

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 $>

None of the solutions here worked for me, so I ended up with adding the following line in my .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λ "'

That last part \D{%T} is what shows the current time (don't care about the date, as usually I need to know how much time has ellapsed since I started a task).

Of course, this doesn't automatically change the prompt on all git bash terminals. You have to execute the myprompt command on the default prompt to change it. I tried to just do the above export inside the .bashrc file but I was getting an error. Maybe someone will have a better idea on how to get around that.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.