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