Vim und matlab GUI - Emulieren Sie matlab Run (<F5>) mit Vim

Ich benutze Linux und Gvim / Vim als externen Editor für Matlab.

Mit dem Matlab-Editor können Sie eine Datei ausführen, indem Sie F5 drücken. Ich versuche dies mit gvim-gtk (offiziellen Debian-Paketen) zu reproduzieren.

Ich weiß, dass es möglich ist, den Dateinamen oder die Auswahl im "Bash-Modus" wie folgt an matlab zu senden:

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

Ich möchte aber die Matlab-Oberfläche verwenden (die in meinem Fall bereits geöffnet ist). Hier ist die Lösung, von der ich dachte, dass sie für mich funktionieren könnte:

Verwenden Sie in vim eine Tastenzuordnung, die Folgendes bewirkt:(a) in die Zwischenablage legen: run ('Pfad-zu-Datei') oder cd ('Ordner'); run ('Dateiname')(b) Rufen Sie einen Shell-Befehl auf, der der matlab-GUI den Fokus gibtZu diesem Zeitpunkt sollte ich mich im matlab-Befehlsfenster befinden, also drücke ich einfach Strg-V und der Inhalt der Zwischenablage sollte eingefügt werden. (Ich benutze Linux, aber Matlab mit Windows-Tastenkombinationen)

Schritt 1a: Der folgende Befehl fügt den Befehl run ('filename') in die Zwischenablage ein und matlab fügt ihn ein, wenn Sie STRG-V drücken

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

Die beiden folgenden funktionieren mit dem Einfügen der mittleren Linux-Schaltfläche (aber das ist nicht das, was ich will, da ich die Maus in diesem Schritt vermeiden möchte)

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

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

Schritt 1b: Um matlab window den Fokus zu geben, benutze ich den folgenden Befehl:

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

Dies funktioniert gut, aber es wird auch Ihr Browser angezeigt, wenn Sie sich auf einer Seite mit dem Wort matlab im Titel befinden (wie die, die Sie gerade lesen ...). (Siehe auch eine komplexere LösungGibt es einen Linux-Befehl, um die Fenster-IDs zu bestimmen, die einer bestimmten Prozess-ID zugeordnet sind? )

Meine (jetzt alte) Option, aber STRG-V funktioniert nicht! Nur das Einfügen mit der Maus bewirkt Folgendes:

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

Irgendwie funktioniert STRG-V in diesem Fall nicht, wenn es mit wmctrl kombiniert wird (siehe Bearbeitung unten). Der springende Punkt ist für mich zu vermeiden, die Maus für diese Operation zu verwenden.

Danke für deine Hilfe.

Bearbeiten und Arbeitsoption Meine schlechte, ich habe xclip verwendet, wo ich xclip -selection hätte verwenden sollen. C. Siehe meine Antwort unten ..

Ich würde mich freuen, wenn jemand eine bessere Lösung findet, zum Beispiel: direkt in matlab-Befehlsfenster einfügen, sicherstellen, dass Sie sich in den Befehlsfenstern befinden (Strg-0) oder vermeiden, den Browser mit wmctrl abzufangen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage