АффигительноБольшойТекстовыйФайл3 - Таймстампы

Jan 25, 2009 11:07

Когда ведешь записи в текстовом блоге, редактор который может проставить в тексте время и дату, экономит чертовски много сил. Особенно странному зверьку вроде вашего покорного слуги, который (а) терпеть не может писать дату и время вручную (б) считатет, что хорошее и правильное датирование удваивает ценность записей. См. Самонаводящиеся Заметки.

Польза от таких таймстампов не только в том, что они позволяют привязать заметку к конкретной дате, но и в том, что они (у меня во всяком случае) могут служить уникальными номерами для заметок и дисков, позволяя сортировать их по дате и находить нужный конкретный диск. Такая нумерация намного точнее и информативнее, чем простые номера, плюс, как это ни странно, не требует "включать голову".


Если вы нумеруете диски или папки с фотографиями dvd1, dvd2, ... то на шаге N непременно задумаетесь - вам ставить N, N-1 или N+1? (особенно, если диск записывается где-нибудь далеко от дома и N предыдущих дисков). С датами такой проблемы нет dvd20090124, dvd20090125 - а если они идут более часто - всегда можно кроме даты подключить время, или нумеровать диски в пределах одного дня dvd20090124_1, dvd20090124_2, dvd20090124_3, ...

Формат даты - видимо дело личных предпочтений. Я исхожу из прагматичных соображений - если писать даты как год-месяц-день (2009-01-24 или 20090124), то пронумерованные так файлы (или директории, или заметки, или текстовые поля) выстраиваются по времени сами собой - достаточно рассортировать их список по алфавиту. С подачи WinOrganizer'а я привык к таймстампам год-месяц-день часы:минуты и в других редакторах перестраивал их точно так же.

В Vim таймстампы я реализовал с помощью аббревиатур.

В моем vimrc вписаны следующие функции:

iab Втс =strftime("%H:%M")
iab Вдс =strftime("%Y-%m-%d")
iab Вдтс =strftime("%Y-%m-%d %H:%M")
iab Бдтс =strftime("д %Y-%m-%d %H:%M")

если я набираю одну из аббревиатур - она автоматически заменяется на текущее время в нужном формате:

Втс (Вставить тайм-стамп)
15:48

Вдс (Вставить дата-стамп)
2009-01-24

Вдтс (Вставить дата-тайм-стамп)
2009-01-24 15:48

Бдтс (Блоговый Дата-Тайм-Стамп - для записей в дневнике)
д 2009-01-24 15:48




Все таймстампы всегда подсвечиваются - у меня есть отдельный файлик синтаксиса blog.vim, где в числе прочих прописана подсветка и для таймстампов:

syntax clear
syntax sync fromstart

...

" подсветка Втс
highlight Timestamp term=bold ctermfg=4 guifg=#80a0ff
syn match Timestamp /[0-2][0-9][:][0-5][0-9]/

" подсветка Вдс
highlight Timestamp2 term=bold ctermfg=4 guifg=#80a0ff
syn match Timestamp2 /[12][90][0-9][0-9]-[0-1][0-9]-[0-3][0-9]/ nextgroup=Timestamp skipwhite

" Вдтс подсвечивается само - Вдс+Втс

" подсветка Бдтс
highlight MyBlogTimestamp term=bold ctermfg=4 guifg=#80a0ff
syn match MyBlogTimestamp /^д\s.*$/ contains=ALL

Так оно выглядит в электронном формате. Что касается бумаги... раньше я в записных книжках ставил даты в том же формате, пока, в GitS:SAC не подсмотрел "военную форму записи" - где время просто пишется четырьмя цифрами без разделителей - что хорошо читается и легко пишется: 1200, 2130 и так далее. Эта привычка началась с бумаги, потом распространилась на даты (20090124) и сейчас плавно перетекла в электронную форму - если я набираю время/дату вручную, то чаще всего это выглядит именно так.

Есть еще одна проблема. Я терпеть не могу держать в голове что сейчас за день (месяц, год), но она легко решаема - электронные часы с календарем и доведенный до автоматизма рефлекс - перед тем как что-то писать - независимо от того это запись на клочке бумаги, в записной книжке или список студентов - нажать кнопку и записать цифры на бумагу. Голову включать (точнее отвлекать от мыслей, которыми она занята) совсем не требуется. Дома это дополняется часиками BetaClock в трее, которые крупными цифрами показывают не только время, но и дату с днем недели. Но бумага (например, как нумеровать страницы в записной книжке, если терпеть не можешь этого делать) - это отдельный разговор.

Раз уж речь зашла о подсветке, то, чтобы дважды на этом не останавливаться - вот подсветка для всего остального.




" добавляю подсветку для плейнтекста

match Comment /{.\+}/
syntax clear
syntax sync fromstart

" подсвечивает желтым крылатые =тэги=
highlight BlogTag term=bold ctermfg=4 guifg=#D2D200
syn match BlogTag /[=][^ ]\{,20}[=]/ contains=Oye

" подсвечивает темно-зеленым мои комментарии в разных вариантах

" комментарии вида //
highlight meComment term=bold ctermfg=6 guifg=darkgreen
syn region meComment start=/[^:/]\/\// end=/$/

highlight meComment2 guifg=darkgreen
syn region meComment start=/^\/\// end=/$/

" комментарии вида { }
highlight meComment3 guifg=darkgreen
syn region meComment start=/ {/ end=/}/

highlight meComment4 guifg=darkgreen
syn region meComment start=/^{/ end=/}/

" комментарии вида /* */
syn region meComment start=/\/\*/ end=/\*\//

" подсвечивает оранжевым цветом заголовки разделов

highlight meHeader term=bold ctermfg=6 guifg=Orange
syn region meHeader start=/^\~/ end=/$/

" выделяет красным цветом важные места - я их отмечаю
" двумя восклицательными знаками в начале строки
highlight NB term=bold ctermfg=6 guifg=Red
syn match NB /^!! .\+$/

" выделяет голубым цветом цитаты и квотинг - я их отмечаю
" знаком > в начале строки
highlight Citer term=bold ctermfg=6 guifg=#62EDF0
syn region Citer start=/^>/ end=/$/

" подсветка Втс
highlight Timestamp term=bold ctermfg=4 guifg=#80a0ff
syn match Timestamp /[0-2][0-9][:][0-5][0-9]/

" подсветка Вдс
highlight Timestamp2 term=bold ctermfg=4 guifg=#80a0ff
syn match Timestamp2 /[12][90][0-9][0-9]-[0-1][0-9]-[0-3][0-9]/ nextgroup=Timestamp skipwhite

" Вдтс подсвечивается само - Вдс+Втс

" подсветка Бдтс
highlight MyBlogTimestamp term=bold ctermfg=4 guifg=#80a0ff
syn match MyBlogTimestamp /^д\s.*$/ contains=ALL

Раньше такая подсветка включалась через vimrc или по хоткею. Сейчас у меня просто в самом начлале каждого блога есть моделайн - строка вида:

//моделайн: vim: syntax=blog:

Вим подхватывает ее, определяет тип подсветки через эту строчку и включает подсветку автоматически. Так что все работает само и без моего участия :)

all_АБТФ, me, интересно_в_основном_мне, идеи, инфотех

Previous post Next post
Up