Vim i matlab GUI - Emuluj Matlab Run (<F5>) za pomocą Vima

Używam linux i gvim / vim jako zewnętrznego edytora dla matlab.

Używając edytora matlab możesz uruchomić plik naciskając F5. Próbuję odtworzyć to za pomocą gvim-gtk (oficjalne pakiety debian).

Wiem, że możliwe jest skierowanie nazwy pliku lub zaznaczenia do matlab w „trybie bash”, tak jak poniżej:

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

Ale chcę użyć gula Matlab (który w moim przypadku jest już otwarty). Oto rozwiązanie, które według mnie mogłoby mi się udać:

Użyj mapowania klucza w vim, które:(a) umieść w schowku coś w rodzaju: run ('path-to-file') lub cd ('folder'); run ('filename')(b) wywołuje polecenie powłoki, które skupia się na GUI matlabW tym momencie powinienem być w oknie poleceń matlab, więc po prostu wciskam Ctrl-V i zawartość schowka powinna zostać wklejona. (Używam Linuksa, ale Matlab z skrótami klawiszowymi Windows)

Krok 1a: Następujące polecenie umieści komendę run ('filename') w schowku, a matlab wklei ją po naciśnięciu CTRL-V

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

Dwa poniższe będą działać z wklejaniem środkowego przycisku linux (ale to nie jest to, czego chcę, ponieważ chcę uniknąć myszy w tym kroku)

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

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

Krok 1b: Aby zwrócić uwagę na okno Matlaba, używam następującego polecenia:

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

To działa dobrze, ale zobaczysz także twoją przeglądarkę, jeśli jesteś na stronie ze słowem matlab w tytule (jak ten, który czytasz ...). (patrz także bardziej złożone rozwiązanieCzy istnieje polecenie linux określające identyfikatory okien powiązane z danym identyfikatorem procesu? )

Moja (teraz stara) opcja, ale CTRL-V nie działa! Tylko wklejanie za pomocą myszy:

<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>

W jakiś sposób CTRL-V nie działa w tym przypadku w połączeniu z wmctrl (patrz edycja poniżej). Cała rzecz polega na tym, aby unikać używania myszy do tej operacji.

Dziękuję za pomoc.

Edycja i opcja robocza Moje złe, korzystałem z xclip, gdzie powinienem użyć xclip -selection c. Zobacz moją odpowiedź poniżej ..

Byłbym zadowolony, gdyby ktoś znalazł lepsze rozwiązanie, na przykład: wklejając bezpośrednio w oknach poleceń matlab, upewniając się, że jesteś w oknach poleceń (Ctrl-0), lub unikając łapania przeglądarki za pomocą wmctrl.

questionAnswers(3)

yourAnswerToTheQuestion