vim - 如何在vim命令中扩展变量?

标签 vim variables variable-expansion

我正在尝试在命令调用中扩展变量。这是我的 .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/

相关文章:

vim - 在使用 :Gstatus in vim-fugitive 时跳转到显示 `modifed...` 的行

vim - 打开文件类型还是关闭文件类型?

c - 替换函数或由文本本身定义

ruby - 多个变量赋值是同时完成的吗?

zsh - 嵌套参数扩展未按预期工作

linux - Bash 参数扩展

ruby-on-rails - 在 rails.vim 中,为什么会出现 "E345 can' t find file in path”错误?

C++ 全局变量声明

javascript - 为什么我的变量是 "undefined"

java - 替换文本: Suggestions?中的变量