13

コマンド呼び出しで展開された変数を取得しようとしています。ここに私が持っているものがあります.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 には string が渡されるだけ`=flist`です。


Andrew Barnett と Mykola Golubyev の回答のおかげで、私はこれを手に入れました。もっと良い方法はありませんか?

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
4

2 に答える 2

7

試してみてください

let joined = join(split(flist))
exec 'TlistAddFiles '.joined

あなたの編集に:

 let flist = split(findres, '\n')
 call map(flist, 'fnameescape(v:val)')
于 2009-03-20T16:02:16.530 に答える
3

何かのようなもの

exe "TlistAddFiles `=".flist

動作する可能性があります。

于 2009-03-20T16:03:22.987 に答える