Question

Je suis en train d'obtenir une variable étendue dans un appel de commande. Voici ce que j'ai dans mon .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

A la syntaxe rapide :, le travail semble `=flist` (ou, au moins il l'a fait avec une variable de w:), mais dans le fichier <=> elle ne présente pas - TlistAddFiles est juste passé la string <=>.


Merci à Andrew Barnett et les réponses de Mykola Golubyev, j'ai maintenant ce qui semble fonctionner. Yat-il pas mieux?

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
Était-ce utile?

La solution

Essayez seulement

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

Pour votre édition:

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

Autres conseils

Quelque chose comme

exe "TlistAddFiles `=".flist

pourrait fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top