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

StackOverflow https://stackoverflow.com/questions/56052

  •  09-06-2019
  •  | 
  •  

Вопрос

EditPad Lite имеет приятную функцию (CTRL-Э, CTRL-я), который вставляет отметку времени, например.«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.]Это передаст текущую строку в стандартный ввод, а затем заменит ее выводом команды;отсюда и часть «найти пустую строку».]

В качестве дополнения к ответу @Swaroop CH:

^R=strftime("%FT%T%z")

— это более компактная форма, в которой также будет печататься часовой пояс (фактически разница с UTC в форме, соответствующей ISO-8601).

Если по какой-то причине вы предпочитаете использовать внешний инструмент,

:r !date --rfc-3339=s

предоставит вам полную временную метку, соответствующую RFC-3339;использовать ns вместо s для точности, подобной Споку, и сквозной tr ' ' T использовать заглавную букву Т вместо пробела между датой и временем.

Также вам может быть полезно знать, что

:source somefile.vim

будет читать команды из somefile.vim:таким образом вы можете настроить собственный набор сопоставлений и т. д., а затем загружать его при использовании vim в этой учетной записи.

:р!дата

Затем вы можете добавить формат к команде даты (man date), если вам нужен точно такой же формат, а также добавить его как псевдоним vim.

:р!дата +"\%Y-\%m-\%d \%H:\%M:\%S"

В результате получается формат, который вы показали в своем примере (дата в оболочке не использует \%, а просто %, vim заменяет % именем текущего файла, поэтому вам нужно экранировать его).

Вы можете добавить карту в свой .vimrc, чтобы она автоматически вводила команду, например, каждый раз, когда вы нажимаете F3:

:map <F3> :r! date +"\%Y-\%m-\%d \%H:\%M:\%S"<cr>

(Отредактировал сверху выше :)) (Изменить:измените текстовую часть на код, чтобы

<F3> 

можно показать)

Обратите внимание на совет, посвященный для вставки/обновления отметки времени на vim.викиа.

Для временной метки unix:

:r! date +\%s

Вы также можете сопоставить эту команду с клавишей (например, F12) в VIM, если вы ее часто используете:

Поместите это в свой .vimrc:


map  <F12> :r! date +\%s<cr>

Из Вим Викия.

Я использую это вместо того, чтобы двигать рукой, чтобы нажать клавишу F:

:iab <expr> tds strftime("%F %b %T")

Теперь в режиме вставки он просто набирает tds, и как только я нажимаю пробел или возвращаюсь, я получаю дату и продолжаю печатать.

я положил %b там, потому что мне нравится видеть название месяца.А %F дает мне что-то для сортировки по дате.Я мог бы изменить это на %Y%m%d поэтому между единицами нет символов.

Еще один быстрый способ, не включенный в предыдущие ответы:тип-

!!дата

Юникс, используйте:

!!date

Windows, используйте:

!!date /t

Подробнее: см. Insert_current_date_or_time

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top