カテゴリー

アーカイブ






vimからmayaにコマンドを送るプラグイン(1)


そんなスクリプトはないのかと
「vim maya」でぐぐったら当ブログが出てきてびびった。
で、一から書いてみた
Vim2Maya.vim:

function! GetSelRange()
:let tmp = @@
:silent normal gvy
:let selected = @@
:let @@ = tmp
return selected
endfunction

function! Vim2Maya()
python << EOF
import socket
import sys, vim, string

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost',8383))
src = vim.eval("GetSelRange()")

# delete line break character
srcT = src.split("\n")
src = string.join(srcT)

s.send(src)
EOF
endfunction

参考:
Digital Matrix
名無しのVIm使い
+python もしくは +dyn/PythonでコンパイルされたVimでしか使えません。
pythonでソケットを作ってコマンドを飛ばします。
改行文字を消しているのは、改行部分でスクリプトが細切れになるのでfor文等が実行できないためです。
vimのpluginフォルダにVim2Maya.vimをおき、VIMを起動。
Mayaの方は以下のMELでコマンドポートを開けておきます

commandPort -n ":8383";

で、VIM上でMayaに送りたい部分を選択して以下のコマンドを入力

:call Vim2Maya()

とすると、Maya上でMELが実行されます。

欲しいなぁと思ってた機能だけど実際はあんまり使えませんね。
アプリケーションが切り替わる感じが個人的にはまだしっくりこない感じです。

選択したスクリプトを直接飛ばしているのだけど
これだとソケットの仕様上4KB(4096B)までしか送れません。
一時バッファとしてどこかに保存にして、MELにはsourceコマンドを飛ばす方法にしたほうが
いい気がします。
あとMayaの出力をVimのバッファに持ってこれたらいいんですけどね

次回に続きます



Leave a Reply