9

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 promt 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
8

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
  • 1
    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
9

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

clink.prompt.register_filter(custom_prompt, 1)

And this is the resulting prompt

C:\
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}", "λ")
end
  • 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)"←\` – Scott Beeson 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
0

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

clink.prompt.register_filter(my_prompt_filter, 1)

result:

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

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.