在 vim 脚本中执行的 shell 命令的输出可以重定向到文件吗?

Can the output of a shell command executed inside a vim script be redirected to a file?

我正在尝试为 vim 的 Go 项目生成标签。由于 ctags 没有对 go 的原生支持,所以我使用 gotags 来支持它。我写了一个小 vim 函数来检查文件是否为 .go,如果是则使用 gotags 而不是 ctags:

    function! g:GenerateTags()
        if &filetype == 'go'
            !gotags -R -f tags .
        else
            !ctags -R .
        endif
    endfunction

这适用于其他语言,但 gotags 只是输出到控制台而不是文件。我也试过:

system('gotags -R -f tags .')
system('gotags -R . > tags')
execute !gotags -R . > tags

但输出仍然定向到控制台。

有没有办法将其重定向到文件?

我的 vimrc 中的版本似乎有错字,因为我再次尝试使用此处发布的第一个版本并且它起作用了:

    function! g:GenerateTags()
        if &filetype == 'go'
             !gotags -R -f tags .
        else
            !ctags -R .
        endif
    endfunction