Как добавить текущую дату / время в подсказку clink / cmder

12

Я довольно счастливым пользователем звоном через большой cmder пакет. Единственное, что мне не хватает - это простой способ настроить командную строку для отображения текущей даты / времени (и последнего кода выхода, номера истории, как в bash... и т. Д.).

Может ли кто-нибудь указать мне правильное направление, как это сделать?

Жолт Ботыкай
источник
Вы можете просто использовать Windows date /t? Кроме того, Windows сохраняет последний код выхода, в %errorlevel%то время как sh использует $?. Попробуйте это.
Боб
Но как интегрировать этот вывод в приглашение? Я не хочу запускать date /tкаждый раз перед выполнением какой-либо длительной команды.
Жолт Ботыкай
Ой. Пойди посмотри prompt /?, там есть дата и время. Опять же, это стандартная командная строка Windows - я понятия не имею, что делают clink или cmder.
Боб

Ответы:

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как это определяет настройки подсказки.

Maximus
источник
Для cmder предложенный способ редактирования настроек подсказки - %CMDER_ROOT%\config\user-startup.cmdнет init.bat.
2016 г.
На win7 с Cmder добавление помогло $tмне:@prompt $E[1;32;40m$P$S{git}{hg} $t$S$_$E[1;30;40m{lamb}$S$E[0m
Benj
@ wegry, похоже, этот %CMDER_ROOT%\config\user-startup.cmdфайл никак не повлиял на мою конфигурацию. Может быть, я делал это неправильно.
Бендж
@Benj Сначала мне это тоже не показалось, но потом перезагрузка? Я озадачен тем, что заставило начать работать.
wegry
2
в 2018 году у меня работало prompt cmd /c echo ($t$s) :$p$gдобавить в user-profile.cmdфайл (windows10).
Эдвин
10

Ответ от Maximus больше не действителен для cmder 1.3+

Вы должны создать .luaфайл (например, my_prompt.lua) в папке cmder 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
Gruber
источник
Максимус ответ правильный, но это лучший ответ!
AuthorProxy
D:\Tools\cmder\config\my_prompt.lua:1: unexpected symbol near char(255) и приглашение выглядит так: `1: 26.51)" ← \ `
Адвокат дьявола
ммм Я не знаю, что это такое, но проверяя снова мой файл lua, он не совсем совпадает со старым кодом, который я разместил, скажите мне, работает ли тот, который я обновляю сейчас, работает.
Грубер
Комментарий от @Edwin в ответе Максимуса сработал для меня. prompt cmd /c echo ($t$s) :$p$gвuser-profile.cmd
адвокат дьявола
Это само по себе ничего не меняет в моей подсказке git bash в cmder. Должен ли cmder читать и выполнять все файлы .lua в папке config при запуске?
AsGoodAsItGets
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файла, но я получил ошибку. Возможно, у кого-то будет лучшее представление о том, как обойти это.

Лучше не бывает
источник