Vim y matlab GUI - Emulate matlab Run (<F5>) con Vim
Estoy usando linux y gvim / vim como editor externo para matlab.
Usando matlab editor puedes ejecutar un archivo presionando F5. Estoy intentando reproducir esto con gvim-gtk (paquetes oficiales de Debian).
Sé que es posible dirigir el nombre de archivo o la selección a matlab en "modo bash" como lo siguiente:
<code>execute '!echo "' ."run(\'".expand("%:p")."\')" . '"| matlab -nojvm' execute '!matlab -nodisplay < '.expand("%:p") noremap <C-CR> :?%%?;/%%/w !matlab -nojvm </code>
Pero quiero usar la gui de Matlab (que en mi caso ya está abierta). Aquí está la solución que pensé que podría funcionar para mí:
Utilice una asignación de teclas en vim que haría:(a) ponga en el portapapeles algo como: ejecutar ('ruta al archivo') o cd ('carpeta'); ejecutar ('nombre de archivo')(b) llamar a un comando de shell que da el foco a la GUI de matlabEn este punto, debería estar en la ventana de comandos de matlab, así que simplemente presiono Ctrl-V y el contenido del portapapeles debería estar pegado. (Estoy usando Linux, pero matlab con Windows Keybindings)Paso 1a: Lo siguiente pondrá el comando ejecutar ('nombre de archivo') en el portapapeles, y matlab lo pegará al presionar CTRL-V
<code>let @+="run(\'".expand("%:p")."')" </code>
Los dos siguientes funcionarán con el pegado del botón central de Linux (pero eso no es lo que quiero, ya que quiero evitar el mouse en este paso)
<code>let @*="run(\'".expand("%:p")."')" execute '!echo "' . "run(\'".expand("%:p")."\')" . '"| xclip' </code>
Paso 1b: Para dar el foco a la ventana matlab, uso el siguiente comando:
<code>wmctrl -a MATLAB & </code>
Esto funciona bien, pero también verá su navegador si está en una página con la palabra matlab dentro del título (como la que está leyendo ...). (Ver también una solución más compleja.¿Hay un comando de Linux para determinar los identificadores de ventana asociados con un identificador de proceso determinado? )
Mi opción (ahora antigua), pero CTRL-V no funciona! Solo el pegado del mouse hace:
<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 alguna manera, CTRL-V no funciona en este caso cuando se combina con wmctrl (ver edición más abajo). El punto para mí es evitar usar el mouse para esta operación.
Gracias por tu ayuda.
Edición y opción de trabajo. Mi mal, estaba usando xclip donde debería haber usado xclip -selección c. Ver mi respuesta a continuación ..
Me alegraría que alguien encontrara una mejor solución, por ejemplo: pegar directamente en las ventanas de comandos de matlab, asegurándose de que esté en las ventanas de comandos (Ctrl-0), o evitar capturar el navegador con wmctrl.