Ответ 1
Попробуйте просто
let joined = join(split(flist))
exec 'TlistAddFiles '.joined
К вашему редактированию:
let flist = split(findres, '\n')
call map(flist, 'fnameescape(v:val)')
Я пытаюсь получить переменную, расширенную в командном вызове. Вот что у меня в моем .vimrc
:
command! -nargs=1 -complete=dir TlAddPm call s:TlAddPm(<f-args>)
function! s:TlAddPm(dir)
let flist = system("find " . shellescape(a:dir) . " -type f -name '*.pm' | sort")
TlistAddFiles `=flist`
endfun
В приглашении :
синтаксис `=flist`
работает (или, по крайней мере, с переменной w:
), но в файле .vimrc
это не так - TlistAddFiles просто передается строка `=flist`
.
Спасибо Эндрю Барнетту и Николаю Голубьеву, я получил это, что, похоже, работает. Нет лучшего способа?
command! -nargs=1 -complete=dir TlAddPm call s:TlAddPm(<f-args>)
function! s:TlAddPm(dir)
let findres = system("find " . shellescape(a:dir) . " -type f -name '*.pm' | sort")
let flist = []
for w in split(findres, '\n')
let flist += [ fnameescape(w) ]
endfor
exe "TlistAddFiles " . join(flist)
endfun
Попробуйте просто
let joined = join(split(flist))
exec 'TlistAddFiles '.joined
К вашему редактированию:
let flist = split(findres, '\n')
call map(flist, 'fnameescape(v:val)')
Что-то вроде
exe "TlistAddFiles `=".flist
может работать.