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
War es hilfreich?

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
scroll top