Лучше поздно, чем никогда? Я искал, чтобы посмотреть, смогу ли я, чтобы vim включил некоторые метки времени в &verbosefile
, так как это заставляет vim добавлять файл, не указывая, когда началось добавление.
Я адаптировал решение из ответа ZyX здесь и, попробовав некоторые вещи, обнаружил, что простой echo "foo\n"
добавит foo
и символ новой строки к &verbosefile
:
let s:VerboseLS = ' **** V'.'E'.'RB'.'OSE LO'.'GG'.'ING S'.'TA'.'RTED ****'
let s:VerboseLE = ' **** V'.'E'.'RB'.'OSE LO'.'GG'.'ING E'.'ND'.'ED ****'
function! ToggleVerbose()
let l:timestamp = strftime("%c")
if !&verbose
let l:msg = "\n\n" . l:timestamp . s:VerboseLS . "\n\n"
set verbosefile=~/.vim/log/verbose.log
set verbose=100
echo l:msg
else
let l:msg = "\n" . l:timestamp . s:VerboseLE . "\n"
echo l:msg
set verbose=0
set verbosefile=
endif
endfunction
nnoremap <silent> <Leader>vl :call ToggleVerbose()<CR>
Теперь я получаю красивые баннеры в своем журнале:
Sun Feb 17 14:18:02 2013 **** VERBOSE LOGGING STARTED ****
...[snip]...
Sun Feb 17 14:18:08 2013 **** VERBOSE LOGGING ENDED ****
Я определил эти баннеры так, как я сделал, чтобы, если я получу этот файл скрипта, когда включена подробная регистрация, то, если я буду искать в журнале «VERBOSE LOGGING» или подобное, я не буду совпадать с ними.
Таким образом, вы можете адаптировать этот метод для использования reltime
, если ваш vim has('reltime')
для точности менее секунды, и, возможно, сделать оболочку синхронизации равной call
, которая отображает время начала / окончания для вызовов функций (хотя вы ' пришлось бы выполнять рефакторинг, когда вы вызываете вещи в строке без команды call
).
Ооо, у меня просто возникла идея ... Интересно, можно ли установить &verbosefile
на именованный канал, который идет к util, который добавляет метки времени ... Давайте посмотрим ...