質問

私は、コマンドの呼び出しに展開変数を取得しようとしています。ここで私は私の.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`を渡された。

。 <時間>

アンドリュー・バーネットさんとミコラ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
役に立ちましたか?

解決

だけ

試してみてください
let joined = join(split(flist))
exec 'TlistAddFiles '.joined

あなたの編集します:

 let flist = split(findres, '\n')
 call map(flist, 'fnameescape(v:val)')

他のヒント

のようなもの。

exe "TlistAddFiles `=".flist

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top