Como adicionar a data / hora atual ao prompt do clink / cmder


12

Sou um usuário bastante feliz de clink através do ótimo pacote cmder . A única coisa que sinto falta é uma maneira fácil de configurar o prompt de comando para exibir a data / hora atual (e o último código de saída, número do histórico, como em bash... etc).

Alguém poderia me indicar a direção certa sobre como fazer isso?


Você pode apenas usar o Windows date /t? Além disso, o Windows armazena o último código de saída %errorlevel%, enquanto sh usa $?. Experimente aqueles.
Bob

Mas como integrar essa saída ao prompt? Não quero executar date /ttodas as vezes antes de executar algum comando de execução longa.
Zsolt Botykai

Oh. Vá ver prompt /?, há uma opção de data e hora lá. Novamente, esse é o prompt de comando padrão do Windows - não tenho idéia do que clink ou cmder fazem.
Bob

Respostas:


9

Experimente estas configurações de prompt (apenas exemplo, é mostrado como você pode chamar qualquer aplicativo de console em "impressão rápida"). Nota! Funciona apenas no ConEmu.

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

Mas, como Bob disse, há uma maneira mais fácil:

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

E para cmdervocê editar o fornecido, init.batpois define as configurações do prompt.


Para o cmder, a maneira sugerida de editar as configurações de prompt está dentro %CMDER_ROOT%\config\user-startup.cmde não init.bat.
Węgry

No win7 com o Cmder, adicionar $tfez o truque para mim:@prompt $E[1;32;40m$P$S{git}{hg} $t$S$_$E[1;30;40m{lamb}$S$E[0m
Benj

@wegry Este %CMDER_ROOT%\config\user-startup.cmdarquivo não pareceu afetar minha configuração. Talvez eu estivesse fazendo errado.
Benj 21/07

@ Benj Também não pareceu funcionar para mim, mas uma reinicialização mais tarde funcionou? Estou confuso com o que fez começar a funcionar.
Węgry

2
em 2018, trabalhei prompt cmd /c echo ($t$s) :$p$gpara adicionar ao user-profile.cmdarquivo (windows10).
Edwin

10

A resposta fornecida por Maximus não é mais válida para cmder 1.3+

Você precisa criar um .luaarquivo (por exemplo my_prompt.lua) dentro da pasta cmder config com sua definição personalizada (origem) .

Abaixo minha personalização:

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)

E este é o prompt resultante

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

Você pode encontrar mais opções de personalização para a saída de tempo no manual Lua


atualização para comentário relatou erro

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

A resposta do Maximus está correta, mas esta é a melhor resposta!
AuthorProxy

D:\Tools\cmder\config\my_prompt.lua:1: unexpected symbol near char(255) e o prompt se parece com: `1: 26.51)" ← \ `
Advogado do Diabo

mmm Não sei o que é isso, mas verificar novamente meu arquivo lua não é exatamente como o código antigo que publiquei, diga-me se o código que estou atualizando agora está funcionando.
Gruber

O comentário de @ Edwin na resposta de Maximus funcionou para mim. prompt cmd /c echo ($t$s) :$p$ginuser-profile.cmd
Advogado do diabo

Isso por si só não muda nada no meu prompt do git bash no cmder. O cmder deve ler e executar todos os arquivos .lua na pasta de configuração na inicialização?
AsGoodAsItGets 28/01

0

Modificação de uma linha para cmder. Coloque-o em 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)

resultado:

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

0

Nenhuma das soluções aqui funcionou para mim, então acabei adicionando a seguinte linha no meu .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λ "'

Essa última parte \D{%T}é o que mostra a hora atual (não se importe com a data, pois geralmente preciso saber quanto tempo se passou desde que iniciei uma tarefa).

Obviamente, isso não altera automaticamente o prompt em todos os terminais git bash. Você precisa executar o mypromptcomando no prompt padrão para alterá-lo. Tentei apenas fazer a exportação acima dentro do .bashrcarquivo, mas estava recebendo um erro. Talvez alguém tenha uma idéia melhor de como contornar isso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.