在 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
我正在尝试为 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