👋
Vim でカーソル下の英字の時刻を数値でポップアップするスクリプトを書いた
Rails の出力だとよく 03 Jun 2024 04:54:01
みたいなフォーマットで時刻が出力されるんですがパッと見、『何年何月何日』なのか分かりづらいのでカーソル下のテキストをパースして yyyy/mm/dd hh:mm:ss
に変換し、ポップアップするスクリプトを書いてみました。
function! s:get_cursor_word(pattern) abort
const column = getcurpos()[2] - 1
const line = getline(".")
const matched = line->matchstrpos(a:pattern)
if matched[1] <= column && column < matched[2]
return matched[0]
else
return ""
endif
endfunction
function! s:popup_date_en_to_num() abort
const current_word = s:get_cursor_word('\d\d \w\w\w \d\d\d\d \d\d:\d\d:\d\d')
if current_word == ""
return
endif
const date = strftime("%F %T", strptime("%d %b %Y %T", current_word))
call popup_atcursor($"{date}", #{
\ pos: 'botleft',
\ line: 'cursor-1',
\ col: 'cursor',
\ moved: 'any',
\ })
endfunction
command! PopupDateEnToNum call s:popup_date_en_to_num()
nnoremap <silent> <Space><Space>m :PopupDateEnToNum<CR>
" カーソルを移動するたびに自動でポップアップする
augroup ny_popup_date
autocmd!
autocmd CursorMoved * PopupDateEnToNum
augroup END
とりあえず、それっぽいのができたので満足。
これ以外にも何かしら保持情報として出るようなポップアップはつくってみたいですねー。
Discussion