O comando exec
realiza substituições de registros, construindo uma linha de comando a partir deles:
exec "!xv" @m
Se eu emitir o comando Ex
:!xv file.png
tudo está bem e xv inicia e exibe o arquivo.
Mas se file.png estiver em um registrador ou variável, o que é necessário como eu desejo fazer isso em um script, o comando falha porque o vim não substitui o conteúdo do registrador ou variável pelo seu nome. xv então fornece um erro de arquivo não encontrado, por ex. "Não é possível abrir / file / path / @ m"
As versões em movimento do! comando, e. : W! Xv, também falha porque o texto é canalizado para xv, em vez de ser recebido como um parâmetro posicional
É possível passar o conteúdo da variável ou registrar para um comando externo?
Tags command-line bash vim linux