👋

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

とりあえず、それっぽいのができたので満足。
これ以外にも何かしら保持情報として出るようなポップアップはつくってみたいですねー。

GitHubで編集を提案

Discussion