我正在尝试在命令调用中扩展变量。这是我的 .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`
。
感谢 Andrew Barnett 和 Mykola 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)')
关于vim - 如何在vim命令中扩展变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/666757/