是否可以将外部命令的输出传递给`:tabnew`?

mer*_*011 2 vim

我正在尝试使用shell函数生成文件名并将其传递给tabnew.

我怎样才能得到以下的工作等价物,echo foo可能被任意外部命令取代?

tabnew $(!echo foo)
Run Code Online (Sandbox Code Playgroud)

要清楚,所需的结果是评估shell命令,并将其输出传递给tabnew.在上面的示例中,命令应该评估为tabnew foo.

Jon*_*ink 5

您可以使用executesystem创建tabnew命令来完成此操作.

这是一个你可以修改的功能,可能会粘在你的.vimrc:

function! TabNewFoo()
  execute "tabnew ".system('echo "foo"')
endfunction
Run Code Online (Sandbox Code Playgroud)

调用:

:call TabNewFoo()
Run Code Online (Sandbox Code Playgroud)

或者,更通用的形式:

function! TabNewFoo(command)
  execute "tabnew ".system(a:command)
endfunction
Run Code Online (Sandbox Code Playgroud)

调用:

:call TabNewFoo("echo 'foo'")
Run Code Online (Sandbox Code Playgroud)