Лучший способ вставить метку времени в Vim?
EditPad Lite имеет хорошую функцию (CTRL -E,CTRL -Я), которая вставляет метку времени, например, "2008-09-11 10:34:53" в код.
каков наилучший способ получить эту функциональность в Vim?
(Я использую Vim 6.1 на сервере Linux через SSH. В текущей ситуации некоторые из нас имеют общий логин, поэтому я не хочу создавать аббревиатуры в домашнем каталоге, если есть еще один встроенный способ получить отметка времени.)
11 ответов:
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 ().
как расширение к ответу @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 на этой учетной записи.
почему все используют
:r!
? Найдите пустую строку и введите!!date
из командного режима. Сохраните нажатие клавиши![n. b.это будет передавать текущую строку в stdin, а затем заменить строку с выводом команды; следовательно, "найти пустую строку" часть.]
посмотрите на наконечник, посвященный для вставки/обновления метки времени на vim.викия.
: r! дата
затем вы можете добавить формат в команду date (man date), если вы хотите точно такой же формат и добавить его в качестве псевдонима vim, а также
: r! дата + "\%Y - \%m - \%d \%H:\%M:\%S"
это создает формат, который вы показали в своем примере (дата в оболочке не использует \%, а только %, vim заменяет % именем текущего файла, поэтому вам нужно его экранировать).
вы можете добавить карту в свой .vimrc для него, чтобы поставить команду автоматически, например, каждый раз, когда вы нажимаете F3:
:map <F3> :r! date +"\%Y-\%m-\%d \%H:\%M:\%S"<cr>
(отредактировано сверху :) ) (Изменить: изменить текстовую часть в код, так что
<F3>
может быть отображена)
для метки времени 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
таким образом, между единицами нет символов.
Unix,используйте:
!!date
Windows используйте:
!!date /t
Подробнее: см. Insert_current_date_or_time