function! RangeChooser() let temp = tempname() exec 'silent !ranger --choosefiles=' . shellescape(temp) if !filereadable(temp) " Nothing to read. redraw! return endif let names = readfile(temp) if empty(names) " Nothing to open. redraw! return endif " Edit the first item. exec 'edit ' . fnameescape(names[0]) " Add any remaning items to the arg list/buffer list. for name in names[1:] exec 'argadd ' . fnameescape(name) endfor redraw! endfunction command! -bar RangerChooser call RangeChooser() nnoremap f :RangerChooser