Vim でオレオレ gf を書いた
Vim の gf はカーソル下のファイルを開けたりして便利なのですが、Ruby の require で使用した場合、ファイルではなくてディレクトリが開かれてしまうので、ついカッとなってオレオレ gf 書いた。
function! s:open_cmd(file_cmd, dir_cmd, file) if filereadable(a:file) return a:file_cmd . " " . a:file elseif isdirectory(a:file) return a:dir_cmd . " " . a:file else return "" endif endfunction function! s:goto_file(file_open, dir_open, file) let files = split(substitute(globpath(&path, a:file), '\\', '/', "g"), "\n") let exts = split(&suffixesadd, '[,;]') if !empty(exts) let files = eval(join(map(exts, 'map(copy(files), "v:val . ''" . v:val . "''")'), '+')) + files endif let openable = sort(filter(files, 'isdirectory(v:val) || filereadable(v:val)'), reti#lambda("filereadable(a:2) - filereadable(a:1)")) if empty(openable) return "" endif return ":" . s:open_cmd(a:file_open, a:dir_open, openable[0]) . "\<CR>" endfunction nnoremap <expr> gf <SID>goto_file("Tabdrop", "VimFilerTab", expand("<cfile>"))