Лучший способ вставить метку времени в Vim?


EditPad Lite имеет хорошую функцию (CTRL -E,CTRL -Я), которая вставляет метку времени, например, "2008-09-11 10:34:53" в код.

каков наилучший способ получить эту функциональность в Vim?

(Я использую Vim 6.1 на сервере Linux через SSH. В текущей ситуации некоторые из нас имеют общий логин, поэтому я не хочу создавать аббревиатуры в домашнем каталоге, если есть еще один встроенный способ получить отметка времени.)

11 76

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