Como expandir variáveis ??no vim comandos?
-
21-08-2019 - |
Pergunta
Eu estou tentando obter uma variável expandida em uma chamada de comando. Aqui está o que eu tenho na minha .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
No :
pronta, a sintaxe `=flist`
parece trabalho (ou, pelo menos ele fez com uma variável w:
), mas no arquivo .vimrc
isso não acontecer -. TlistAddFiles é só passou a `=flist`
corda
Graças a Andrew Barnett e respostas de Mykola Golubyev, eu agora tenho este, que parece trabalho. Não há nenhuma maneira melhor?
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
Solução
Tente apenas
let joined = join(split(flist))
exec 'TlistAddFiles '.joined
Para a sua edição:
let flist = split(findres, '\n')
call map(flist, 'fnameescape(v:val)')
Outras dicas
Algo como
exe "TlistAddFiles `=".flist
trabalho poder.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow