подставить в заголовке имя файла и время создания

и другие vi-подобные редакторы

Модератор: /dev/random

Ответить
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

подставить в заголовке имя файла и время создания

Сообщение drag0n »

Вот кусок моего .vimrc:

Код: Выделить всё

set background=dark
set ttyfast
" kill the fucking bell
set visualbell

" show matching ( " ' and {
set showmatch

" dont write about childs
set shortmess+=tToOI

"clock in ruler
set ruler
set rulerformat=%{strftime(\"%H:%M\ \")}%(%c,%l\ %p%%%)

" normally work only in C/C++ files (*.c *.cpp *.h *.hpp and other)
imap {<CR> {<CR><Tab><Backspace><CR><Backspace>}
iabbrev #d #define
iabbrev #i #include
iabbrev #f /*FIXME*/
iabbrev #h //File: <CR>Created: <CR>Author: h0rr0rr_drag0n<CR><CR>Description:

Вопрос такой? Как подставлять в заголовке (см. последнюю строчку конфига) после поля File: само имя файла, а после Created: время создания (желательно на английском)??
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: подставить в заголовке имя файла и время создания

Сообщение ZyX »

drag0n писал(а):
26.04.2008 21:06
Вопрос такой? Как подставлять в заголовке (см. последнюю строчку конфига) после поля File: само имя файла, а после Created: время создания (желательно на английском)??
:h :read!
:h :s
:h pattern.txt
:h :_%
man ls
или
man stat

В итоге буде что-то вроде этого:

Код: Выделить всё

:exe "read !LC_TIME='us' ls -la %" | s/[drwxX-]\{10}\s\+\d\+\(\s\+[[:alnum:]]\+\)\{2}\s\+\d\+\s\+\(\u\l\{2}\s\+\d\{,2}\s\+\d\{2}:\d\{2}\)\s\+\(.*\)/FILE:\ \3\rMODIFIED:\ \2/
или
:exe "read !stat --printf=\"FILE: \\%n\\nMODIFIED: \\%y\"" | s/\(\(\d\{2}:\)\{2}\d\{2}\)\@<=\.\d*\s[+\-]\d*//
а еще лучше: (оставляет только ту часть имени файла, что после косой черты)
:exe "read !stat --printf=\"FILE: \\%n\\nMODIFIED: \\%y\" %" | s/\(\(\d\{2}:\)\{2}\d\{2}\)\@<=\.\d*\s[+\-]\d*// | .-1s#\(FILE:\s\)\@<=.*/##
Как добыть дату создания я не знаю. Но если датой создания является дата текущая дата, то смотреть надо
:h bufname()
:h :s
:h :read!
man date

Код: Выделить всё

:exe "normal! oFILE: ".bufname("%") | s#\(FILE:\s\)\@<=.*/## | exe "read !LC_TIME='us' date +\"DATE: \\%d \\%b, \\%Y\""
Сие лучше использовать в mapping'е; смысла использовать аббревиатуру для вещей, которые встречаются разве что один раз на один файл не вижу. А лучше вовсе загнать в какую-нибудь функцию типа NewCFile().
Приведенные примеры не комментируют получившиеся строки.
Спасибо сказали:
Ответить