Sim, o comando :!
considera o restante da linha de comando como argumentos. Para concatenar outros comandos do Vim, você pode envolver o comando com :execute
:
nnoremap <leader>ss :w\|:silent execute '!execute_external_script > output_of_script.txt'\|:redraw!<cr>
Como alternativa, você pode apenas emitir várias linhas de comando, separadas por <CR>
; afinal, um mapeamento é apenas uma macro fixa:
nnoremap <leader>ss :w\|:silent !execute_external_script > output_of_script.txt<cr>:redraw!<cr>
Outra nota: em vez de escapar do separador de comando \|
, a maneira usual é usar o código de tecla especial <Bar>
; veja a lista completa em :help keycodes
; Isso também explica que <CR>
significa retorno de carro .