Форматирование DateTime в VIM без начальных нулей в Месяце, Дне и Часе - PullRequest
0 голосов
/ 19 июля 2010

Кто-нибудь знает, есть ли способ отформатировать дату, сгенерированную strftime в Vim (под MS Windows), так, чтобы месяц, день и час не дополнялись двумя цифрами с начальным нулем?

Например, следующие команды в vimrc:

nmap <F3> a<C-R>=strftime("%I:%M %p %m/%d/%Y ")<CR><Esc>
imap <F3> <C-R>=strftime("%I:%M %p %m/%d/%Y ")<CR>

напечатает

03:32 AM 07/09/2010 

в файл, если это было на самом деле 9 июля.

Я хотел бы знать, есть ли строка формата, которая будет печатать

3:32 AM 7/9/2010

вместо vim. Я знаю, что strftime зависит от платформы, поэтому я ищу решение для Windows без использования внешних инструментов. Буду также признателен за комментарии о том, что это невозможно с этими ограничениями.

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 июля 2010

Некоторые операционные системы поддерживают %k и %e для однозначного часа и дня соответственно.Кажется, что ни один из них не поддерживается в Windows (по крайней мере, в Windows XP, по крайней мере, это все, что у меня есть, чтобы попробовать его).

Но еще не все потеряно.Windows поддерживает %x, что дает дату в нужном формате 7/9/2010, и мы можем избавиться от любого начального нуля с помощью вызова substitute():

echo substitute(strftime("%I:%M %p %x"), "^0", "", "")

Это печатает

3:50 AM 7/19/2010

Имейте в виду, что все это относится не только к ОС, но и к текущей локали.Это действительно не переносимо.

0 голосов
/ 19 июля 2010

Я не знаю, есть ли какие-нибудь способы сказать strftime(), как генерировать то, что вы ищете. Тем не менее, вы все равно можете применить substitute(strftime(...), '\<0\+\ze\d', '', 'g').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...