كيفية توسيع نطاق المتغيرات في الأوامر همة؟
-
21-08-2019 - |
سؤال
وأنا أحاول الحصول على متغير الموسعة في مكالمة الأوامر. وهنا ما لدي في بلدي .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
وفي موجه :
، يبدو بناء الجملة `=flist`
للعمل (أو على الأقل فعلت مع متغير w:
)، ولكن في .vimrc
تودعه لا -. TlistAddFiles يتم تمرير مجرد `=flist`
سلسلة
وبفضل أندرو بارنيت وإجابات ميكولا Golubyev، ولقد حصلت الآن هذا الذي يبدو للعمل. ليس هناك طريقة أفضل؟
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
المحلول
وحاول فقط
let joined = join(split(flist))
exec 'TlistAddFiles '.joined
لتحرير الخاص بك:
let flist = split(findres, '\n')
call map(flist, 'fnameescape(v:val)')
نصائح أخرى
وشيء من هذا القبيل
exe "TlistAddFiles `=".flist
وقد عمل.
لا تنتمي إلى StackOverflow