如何扩大在vim命令变量?
-
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