Comment développer des variables dans les commandes de vim?
-
21-08-2019 - |
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
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