let s:sids = {} function! s:sid(path) abort if has_key(s:sids, a:path) return s:sids[a:path] endif redir => scriptnames silent! scriptnames redir END for line in split(scriptnames, '\n') if line =~# a:path let sid = matchstr(line, '\v^\s*\zs\d+\ze') let s:sids[a:path] = sid return sid endif endfor endfunction function! SID(name) abort return function(printf("\%d_%s", s:sid('autoload/lightline.vim'), a:name)) endfunction