Wie Variablen in vim Befehle erweitern?
-
21-08-2019 - |
Frage
Ich versuche, eine Variable in einem Befehlsaufruf erweitert zu erhalten. Hier ist, was ich in meinem .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
Am :
Aufforderung die `=flist`
Syntax scheint (oder zumindest mit einem w:
Variable tat) zu arbeiten, aber in den .vimrc
Datei nicht -. TlistAddFiles wird nur die Zeichenfolge `=flist`
geben
Dank Andrew Barnett und Mykola Golubyev der Antworten, ich habe das jetzt bekommen, was zu funktionieren scheint. Gibt es keinen besseren Weg?
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
Lösung
Versuchen Sie, nur
let joined = join(split(flist))
exec 'TlistAddFiles '.joined
Um Ihre edit:
let flist = split(findres, '\n')
call map(flist, 'fnameescape(v:val)')
Andere Tipps
So etwas wie
exe "TlistAddFiles `=".flist
funktionieren könnte.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow