Ответ 1
http://kenno.wordpress.com/2006/08/03/vim-tip-insert-time-stamp/
Пробовал это, он работает на моем mac:
:r! date
дает:
Thu Sep 11 10:47:30 CEST 2008
Это:
:r! date "+\%Y-\%m-\%d \%H:\%M:\%S"
дает:
2008-09-11 10:50:56
EditPad Lite имеет приятную функцию (CTRL - E, CTRL - I), которая вставляет метку времени, например. "2008-09-11 10:34:53" в ваш код.
Каков наилучший способ получить эту функциональность в Vim?
(Я использую Vim 6.1 на Linux-сервере через SSH. В текущей ситуации у нас есть доля входа, поэтому я не хочу создавать сокращения в домашнем каталоге, если есть другой встроенный способ получить отметка времени.)
http://kenno.wordpress.com/2006/08/03/vim-tip-insert-time-stamp/
Пробовал это, он работает на моем mac:
:r! date
дает:
Thu Sep 11 10:47:30 CEST 2008
Это:
:r! date "+\%Y-\%m-\%d \%H:\%M:\%S"
дает:
2008-09-11 10:50:56
Чтобы сделать работу кросс-платформенной, просто введите в vimrc
следующее:
nmap <F3> i<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc>
imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>
Теперь вы можете просто нажать F3 в любое время внутри Vi/Vim, и вы получите временную метку типа 2016-01-25 Mo 12:44
, вставленную в курсор.
Для полного описания доступных параметров проверьте документацию функции C strftime().
Почему все используют :r!
? Найдите пустую строку и введите !!date
из командного режима. Сохраните нажатие клавиши
[n.b. Это приведет к выходу текущей строки в stdin, а затем заменит строку выходным сигналом команды; следовательно, часть "найти пустую строку".]
Как расширение ответа @Swaroop C H,
^R=strftime("%FT%T%z")
- более компактная форма, которая также будет печатать часовой пояс (на самом деле это отличие от UTC в форме, соответствующей ISO-8601).
Если вы предпочитаете использовать внешний инструмент по какой-либо причине,
:r !date --rfc-3339=s
предоставит вам полную временную метку RFC-3339; используйте ns
вместо s
для точности, подобной Спок, и пройдите через tr ' ' T
, чтобы использовать капитал T вместо пробела между датой и временем.
Также вам может быть полезно узнать, что
:source somefile.vim
будет читать команды из somefile.vim
: таким образом вы можете настроить собственный набор сопоставлений и т.д., а затем загрузить его, когда используете vim в этой учетной записи.
: г! дата
Затем вы можете добавить формат в команду date (man date), если вы хотите получить тот же формат и добавить это как псевдоним vim.
: г! date + "\% Y -\%m -\%d\%H:\%M:\%S"
Это создает формат, который вы указали в вашем примере (дата в оболочке не использует \%, но только%, vim заменяет% на имя текущего файла, поэтому вам нужно его избежать).
Вы можете добавить карту в свой .vimrc, чтобы она автоматически вводила команду, например, каждый раз, когда вы нажимаете F3:
:map <F3> :r! date +"\%Y-\%m-\%d \%H:\%M:\%S"<cr>
(Отредактировано сверху:)) (Изменить: изменить текстовую часть на код, чтобы
<F3>
может отображаться)
Посмотрите на наконечник, посвященный на вставку/обновление временной отметки на vim.wikia.
Для отметки времени unix:
:r! date +\%s
Вы также можете сопоставить эту команду с ключом (например, F12) в VIM, если вы его много используете:
Поместите это в свой .vimrc:
map <F12> :r! date +\%s<cr>
Из Vim Wikia.
Я использую это вместо того, чтобы переместить мою руку, чтобы нажать клавишу F:
:iab <expr> tds strftime("%F %b %T")
Теперь в режиме Вставки просто введите tds и как только я нажму пробел или вернусь, я получаю дату и продолжаю печатать.
Я положил %b
туда, потому что мне нравится видеть имя месяца. %F
дает мне что-то сортировать по дате. Я мог бы изменить это на %Y%m%d
, чтобы между единицами не было символов.
Еще один быстрый способ, не включенный в предыдущие ответы: type -
!! дата
!!date
!!date /t
Я хотел, чтобы пользовательская команда :Date
(а не отображение клавиш) вставляла дату в текущую позицию курсора.
К сожалению, простые команды, такие как r!date
, приводят к новой строке. Итак, наконец, я придумал следующее:
command Date execute "normal i<C-R>=strftime('%F %T')<CR><ESC>"
которая добавляет строку даты/времени в позицию курсора без добавления новой строки (измените на normal a
добавить после позиции курсора).