没有代码经验,简单粗暴的脚本,我直接放在 vimrc 中了~
代码如下:
function! PeriodicNotesNav(offs2,offs1,offset)
let current_file = expand('%:t')
if current_file =~ '^\d\d\d\d\.md$'
let year = matchstr(current_file, '^\d\d\d\d')
let year = year + a:offset
if year >= 2000 && year <2030
execute 'edit ' . year . '.md'
endif
elseif current_file =~ '^\d\d\d\d-\d\d\.md$'
let year = matchstr(current_file, '^\d\d\d\d')
let month = matchstr(current_file, '\d\d\d\d-\zs\d\d')
let month = month + a:offset
let year = year + a:offs1
if month >0 && month < 13
let month = printf('%02d', month)
execute 'edit ' . year . '-' . month . '.md'
endif
elseif current_file =~ '^\d\d\d\d-\d\d-\d\d\.md$'
let year = matchstr(current_file, '^\d\d\d\d')
let month = matchstr(current_file, '\d\d\d\d-\zs\d\d')
let day = matchstr(current_file, '\d\d\d\d-\d\d-\zs\d\d')
let day = day + a:offset
let month = month + a:offs1
let year = year + a:offs2
if day > 0 && day < 32 && month > 0 && month < 13
let day = printf('%02d', day)
let month = printf('%02d', month)
execute 'edit ' . year . '-' . month . '-' . day . '.md'
endif
endif
endfunction
nnoremap <Right> :call PeriodicNotesNav(0,0,+1)<CR>
nnoremap <Left> :call PeriodicNotesNav(0,0,-1)<CR>
nnoremap <up> :call PeriodicNotesNav(0,+1,0)<CR>
nnoremap <down> :call PeriodicNotesNav(0,-1,0)<CR>
nnoremap <s-up> :call PeriodicNotesNav(+1,0,0)<CR>
nnoremap <s-down> :call PeriodicNotesNav(-1,0,0)<CR>
--
FROM 23.142.224.*