Você não pode canalizar a saída de um comando shell em um comando que cria um novo buffer, mas pode criar um novo buffer e ler a saída de um comando shell nesse buffer com uma entrada na linha de comando do Vim. Uma versão funcional do seu exemplo seria
:tabnew | r !echo <c-r>=bufname("#")<cr>
Note que o símbolo pipe neste caso é um separador entre os comandos ex do Vim, não o pipe do shell. Veja também
:help :tabnew
:help :r!
:help :bar