Который сейчас час? - Наименьшее количество нажатий клавиш в vim?

447
malew

Задача: показать текущее время пользователю vim.

Это не вопрос вставки времени в документ, что можно легко сделать, например, с помощью !! date. В моем вопросе пользователь просто хочет знать, который час.

Наименьшее количество нажатий клавиш, по-видимому, связано с выходом из vim или вставкой даты в документ и ее удалением:

  1. Позвоните в shell и вернитесь назад::! Date + enter +

  2. Приостановите vim, введите shell и вернитесь: ctrl-z date fg

  3. Вставьте в текущий файл и удалите:: r! Date dd

  4. Введите множество символов и отобразите дату в командной строке:: ec strftime ("% c")

Наверняка должна быть более короткая команда для быстрого отображения текущего времени даже без обновления файла .vmrc?

-2
Я использую `tmux` и для меня ответ - 0 нажатий клавиш. :) Kamil Maciorowski 6 лет назад 1
tmux работает конечно. Как и MacOS, Windows или Linux, если вы запускаете vim в окне. Другое решение - использовать скрепку, чтобы прикрепить часы к экрану. Но вернемся к вопросу: если у вас есть только одно окно с vim и больше ничего, и вы хотите знать, который час, какое наименьшее количество нажатий клавиш? malew 6 лет назад 0
Посмотрите на часы на стене / ваш телефон / ваше запястье. Ноль нажатий клавиш. Это не CodeGolf.SE. grawity 6 лет назад 1
На стене нет часов. Телефон в кармане. Нет наручных часов. Я искренне хотел бы видеть время внутри Vim. Это не игра. Это способ сохранить несколько нажатий клавиш для чего-то, что я часто делаю. malew 6 лет назад 0
Принадлежит https://vi.stackexchange.com/, но этот сайт не отображается в качестве опции в списке «принадлежит другому сайту SE» Dave Sherohman 5 лет назад 2

1 ответ на вопрос

1
Ingo Karkat

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

Ответ: вы показываете время:

  • с помощью пользовательского сопоставления / команды или
  • внутри :help status-lineили :help 'titlestring', где он будет периодически обновляться
  • повторяется всякий раз, когда вы отдыхаете (например, :help CursorHoldвечером)

Что бы ни подходило вашему варианту использования (например, показывать его только по требованию (потому что вы не хотите тратить впустую экранную недвижимость или находить, что периодически обновляющиеся часы отвлекают внимание) вместо показывать это все время).

Для реализации я бы порекомендовал strftime(), так как он встроен и не требует дорогостоящего вызова внешней команды. Это может быть так просто, как это:

:nnoremap <silent> <F1> :echo strftime('%c')<CR>