Linux と gVim/Vim を Matlab の外部エディターとして使用しています。
Matlab エディターでは、 を押してファイルを実行できます F5。gvim-gtk
これを Vim ( Debian パッケージからインストール) で再現しようとしています。
次のように、名前または現在のファイルまたは選択したテキストを「シェルモード」でMatlabに送信できることを知っています。
execute '!echo "' ."run(\'".expand("%:p")."\')" . '"| matlab -nojvm'
execute '!matlab -nodisplay < '.expand("%:p")
noremap <C-CR> :?%%?;/%%/w !matlab -nojvm
しかし、Matlab GUI を使用したい (私の場合は既に開いています)。
これが私にとってうまくいくと思った解決策です:
次のようなキー マッピングを vim で使用します。
- (a) 次のようなものをクリップボードに入れます:
run('path-to-file')
またはcd('folder');run('filename')
. - (b) Matlab GUI にフォーカスを与えるシェル コマンドを呼び出す
- (a) 次のようなものをクリップボードに入れます:
この時点で、Matlab コマンド ウィンドウにいるはずなので、Ctrl-Vを押すだけで、クリップボードの内容が貼り付けられます。(私は Linux を使用していますが、Windows のキーバインドで Matlab を使用しています。)
ステップ 1(a):
以下はrun('filename')
コマンドをクリップボードに入れ、Matlab はCtrl-Vが押されるとそれを貼り付けます:
let @+="run(\'".expand("%:p")."')"
次の 2 つのコマンドは、Linux の中ボタンの貼り付けで機能しますが、この手順ではマウスを使用しないようにしたいので、これは望ましくありません。
let @*="run(\'".expand("%:p")."')"
execute '!echo "' . "run(\'".expand("%:p")."\')" . '"| xclip'
ステップ 1(b): Matlab ウィンドウにフォーカスを移すには、次のコマンドを使用します。
wmctrl -a MATLAB &
これはうまく機能しますが、タイトルに Matlab という単語が含まれるページが開いている場合 (現在読んでいるページのように)、ブラウザ ウィンドウが表示されることもあります。
より複雑な解決策も参照してください:特定のプロセス ID に関連付けられたウィンドウ ID を判別する Linux コマンドはありますか? .
私の(今は古い)オプションですが、機能しませんCtrl!Vマウスの貼り付けのみが次のことを行います。
function! MatRun()
let @+="run(\'".expand("%:p")."')"
let @*="run(\'".expand("%:p")."\')"
:call system('xclip', @+)
!wmctrl -a MAT
endfunction
map <F5> :call MatRun() <cr><cr>
どういうわけか、Ctrl-Vと組み合わせると、この場合は機能しませんwmctrl
(以下の編集を参照)。私にとって重要なのは、この操作にマウスを使用しないことです。
ご協力ありがとうございました。
更新: 有効なオプション
私の悪い、私は私が使用xclip
すべき場所を使用していxclip -selection c
ました。以下の私の返信を参照してください。
たとえば、Matlab コマンド ウィンドウに直接貼り付ける、コマンド ウィンドウ ( Ctrl- 0) にいることを確認する、またはwmctrl
.