Em qualquer bash ou vimscript, como posso executar um script que inicie um aplicativo (xv ou display) e ter o script terminado retornando o foco para vim, mas deixando xv / display ainda em execução. Meu esforço atual é essa função vim, que é essencialmente uma versão dirigida por vim da minha tentativa no bash. Ele trava no último comando até que eu pare de exibir.
" S() is called internally by :F to show images appropriately
function! S(j,k)
if system("pgrep ".a:j)!=''
exe '!pkill '.a:j
endif
exe '!'.a:j.' -geometry +0+'.a:k.@u.' &'
wmctrl -a Botany
endfunction
a: j é nome do aplicativo, a: k é o parâmetro de posição da tela, @u é caminho de arquivo
&
?Respostas:
Um típico script bash seria semelhante
fonte
O problema é que você não pode dissociar um aplicativo do processo que o lançou, a solução que funciona para mim é ter algum outro processo, já em execução, que faça isso para mim. Aqui está a minha solução:
Os três primeiros comandos, para o xterm, compõem o script original que eu usei para abrir este projeto, então este script continuou aberto e aguardando até o momento em que eu fechei o vim e deixei o xterm morrer, ponto no qual esse script de chamada também se fecharia . Então, aqui estava um processo de execução útil, sem fazer nada, e no diretório que eu estava trabalhando. Eu adicionei o resto do código, que verifica a existência de um arquivo q, lê e imediatamente destrói e mata qualquer instância em execução do visualizador. em seguida, reinicia o visualizador usando o caminho de arquivo do arquivo q como a imagem a ser exibida. Tudo completamente dissociado do vim, onde meu vimscript apenas grava o caminho do arquivo para o arquivo q, e nunca faz referência ao aplicativo visualizador, xp.
fonte