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.