Come per espandere le variabili nei comandi di vim?
-
21-08-2019 - |
Domanda
Sto cercando di ottenere una variabile espansa in una chiamata di comando. Ecco quello che ho nel mio .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
Al :
prompt, il `=flist`
sintassi sembra funzionare (o, almeno lo ha fatto con un w:
variabile), ma nel <=> file, non lo fa - TlistAddFiles è appena passato il stringa <=>.
Grazie alle risposte di Mykola Golubyev di Andrew Barnett e, ora ho questa, che sembra funzionare. Non c'è modo migliore?
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
Soluzione
Prova solo
let joined = join(split(flist))
exec 'TlistAddFiles '.joined
Per la tua modifica:
let flist = split(findres, '\n')
call map(flist, 'fnameescape(v:val)')
Altri suggerimenti
Qualcosa di simile
exe "TlistAddFiles `=".flist
potrebbe funzionare.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow