Jak dodać bieżącą datę / godzinę do monitu o kliknięcie / cmder

12

Jestem raczej zadowolony użytkownik brzęk poprzez wielkiego cmder opakowaniu. Jedyne, czego mi brakuje, to łatwy sposób na ustawienie wiersza polecenia do wyświetlania bieżącej daty / godziny (i ostatniego kodu wyjścia, numeru historii, jak w bash... itd.).

Czy ktoś mógłby wskazać mi właściwy kierunek, w jaki sposób to zrobić?

Zsolt Botykai
źródło
Czy możesz po prostu korzystać z systemu Windows date /t? Ponadto system Windows przechowuje ostatni kod wyjścia %errorlevel%, podczas gdy sh używa $?. Wypróbuj te.
Bob
Ale jak zintegrować to wyjście z monitem? Nie chcę uruchamiać się za date /tkażdym razem przed uruchomieniem jakiegoś długotrwałego polecenia.
Zsolt Botykai
O. Idź zobacz prompt /?, jest tam opcja daty i godziny. Znowu jest to standardowy wiersz polecenia systemu Windows - nie mam pojęcia, co robią brzęk lub cmder.
Bob

Odpowiedzi:

9

Wypróbuj następujące ustawienia zachęty (tylko przykład, pokazuje, jak wywołać dowolną aplikację konsoli w ramach „szybkiego drukowania”). Uwaga! Działa tylko w ConEmu.

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

Ale, jak powiedział Bob, istnieje łatwiejszy sposób:

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

A dla cmderciebie należy edytować dostarczone, init.batponieważ określa ustawienia pytania.

Maximus
źródło
W przypadku cmder sugerowany sposób edycji ustawień pytania jest włączony %CMDER_ROOT%\config\user-startup.cmdi nie init.bat.
wegry
W win7 z Cmder dodawanie $tzrobiło dla mnie lewę:@prompt $E[1;32;40m$P$S{git}{hg} $t$S$_$E[1;30;40m{lamb}$S$E[0m
Benj
@wegry ten %CMDER_ROOT%\config\user-startup.cmdplik nie miał żadnego wpływu na moją konfigurację. Może źle to zrobiłem.
Benj
@Benj Na początku też nie działało, ale później uruchomiło się ponownie? Jestem zaskoczony tym, co sprawiło, że zaczęło działać.
węgry
2
w 2018 roku pracowałem prompt cmd /c echo ($t$s) :$p$gnad dodaniem do user-profile.cmdpliku (Windows10).
Edwin,
10

Odpowiedź dostarczona przez Maximus nie jest już ważna dla cmder 1.3+

Musisz utworzyć .luaplik (np. my_prompt.lua) W config folderze cmder z dostosowaną definicją (źródło) .

Poniżej mojej personalizacji:

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)

I to jest wynikowy monit

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

Więcej opcji dostosowywania wyników czasowych można znaleźć w instrukcji Lua


aktualizacja błędu zgłoszonego komentarza

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
Gruber
źródło
Odpowiedź Maximusa jest poprawna, ale to najlepsza odpowiedź!
AutorProxy
D:\Tools\cmder\config\my_prompt.lua:1: unexpected symbol near char(255) a monit wygląda następująco: `1: 26.51)" ← \ `
Adwokat diabła
mmm Nie wiem co to jest, ale ponowne sprawdzenie mojego pliku lua nie jest dokładnie tak, jak napisałem stary kod, powiedz mi, czy działa ten, który teraz aktualizuję.
Gruber,
Komentarz od @Edwin w odpowiedzi Maximusa zadziałał dla mnie. prompt cmd /c echo ($t$s) :$p$gwuser-profile.cmd
Adwokat diabła,
To samo nie zmienia niczego w moim poleceniu git bash w cmder. Czy cmder ma czytać i wykonywać wszystkie pliki .lua w folderze config podczas uruchamiania?
AsGoodAsItGets
0

Modyfikacja jednej linii dla cmder. Umieść go w 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)

wynik:

C:\Users\user1 $>
C:\Users\user1 $> date
The current date is: 02.02.2018
C:\Users\user1 $>
Stan Gabenov
źródło
0

Żadne z rozwiązań tutaj nie działało dla mnie, więc ostatecznie dodałem następujący wiersz w moim .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λ "'

Ta ostatnia część \D{%T}pokazuje aktualny czas (nie obchodzi mnie data, ponieważ zwykle muszę wiedzieć, ile czasu upłynęło od rozpoczęcia zadania).

Oczywiście nie zmienia to automatycznie monitu na wszystkich terminalach git bash. Musisz wykonać mypromptpolecenie w domyślnym monitie, aby je zmienić. Próbowałem po prostu wykonać powyższy eksport w .bashrcpliku, ale otrzymałem błąd. Może ktoś będzie miał lepszy pomysł na obejście tego.

Lepiej Być Nie Może
źródło