Vim e matlab GUI - Emule o matlab Run (<F5>) com o Vim

Estou usando o linux e o gvim / vim como editor externo para o matlab.

Usando o editor matlab você pode executar um arquivo pressionando F5. Estou tentando reproduzir isso com o gvim-gtk (pacotes debian oficiais).

Eu sei que é possível dirigir filename ou seleção para matlab no "bash mode" como o seguinte:

<code>execute '!echo "' ."run(\'".expand("%:p")."\')" . '"| matlab -nojvm' 
execute '!matlab -nodisplay < '.expand("%:p") 
noremap <C-CR> :?%%?;/%%/w !matlab -nojvm
</code>

Mas eu quero usar o Matlab gui (que no meu caso já está aberto). Aqui está a solução que eu pensei que poderia funcionar para mim:

Use um mapeamento de chaves no vim que:(a) coloque na área de transferência algo como: run ('path-to-file') ou cd ('folder'); run ('filename')(b) chamar um comando shell que dá o foco para a GUI matlabNeste ponto, eu deveria estar na janela de comando do matlab, então basta pressionar Ctrl-V e o conteúdo da área de transferência deve ser colado. (Estou usando linux, mas matlab com keybindings do windows)

Etapa 1a: O seguinte colocará o comando run ('filename') na área de transferência, e o matlab irá colá-lo quando pressionar CTRL-V

<code>let @+="run(\'".expand("%:p")."')" 
</code>

Os dois seguintes irão trabalhar com o botão do meio do linux colando (mas não é isso que eu quero desde que eu quero evitar o mouse nesta etapa)

<code>let @*="run(\'".expand("%:p")."')" 

execute '!echo "' . "run(\'".expand("%:p")."\')" . '"| xclip'  
</code>

Etapa 1b: Para dar o foco para a janela do matlab eu uso o seguinte comando:

<code>wmctrl -a MATLAB &
</code>

Isso funciona bem, mas também verá seu navegador se você estiver em uma página com a palavra matlab dentro do título (como a que você está lendo ...). (veja também uma solução mais complexaExiste um comando linux para determinar os IDs de janela associados a um determinado ID de processo? )

Minha (agora antiga) opção, mas o CTRL-V não funciona! Apenas o mouse colando faz:

<code>function! MatRun()
    let @+="run(\'".expand("%:p")."')" 
    let @*="run(\'".expand("%:p")."\')" 
    :call system('xclip', @+)
    !wmctrl -a MAT
endfunction

map <F5> :call MatRun() <cr><cr>
</code>

De alguma forma, o CTRL-V não funciona neste caso quando combinado com o wmctrl (veja a edição abaixo). O ponto principal para mim é evitar usar o mouse para essa operação.

Obrigado pela ajuda.

Editar e opção de trabalho Meu mal, eu estava usando xclip onde eu deveria ter usado xclip -selection c. Veja minha resposta abaixo ..

Eu ficaria feliz se alguém encontrar uma solução melhor, por exemplo: colando diretamente nas janelas de comando do matlab, certificando-se de que você está nas janelas de comando (Ctrl-0), ou evitando pegar o navegador com o wmctrl.

questionAnswers(3)

yourAnswerToTheQuestion