2011-10-20 2 views
0

私はvimを自動化できるpythonスクリプトを作成しようとしていますが、Pythonのvimインターフェイスでは必要なすべてを実行するのに十分な力がありません。私はスクリプトがtty(ビジュアルモードの指示などを出すことができる)のようにvimとやりとりしたい。限り、vimに関する限り、私のスクリプトは、xterm(または何でも)を実行している人間です。これは私の独自のターミナルエミュレータをPythonでビルドせずに行うことができますか?"スクリプト" vimでより細かくPythonを使用

+1

のようにすることができますか?そのようなPythonインターフェイスから通常のV2jx "'を実行できませんか? – ninjalj

答えて

1

インタフェースは呪われているすべての非vimscript:(Pythonでvim.command(string)executeevalをしている(編集する場合を除き/バッファオブジェクトを使用して利用可能であるバッファの内容を取得)のvimと通信するための唯一の方法(vim.eval(string)でPython)、どちらも直列化の引数が必要です。あなただけのビジュアルモードでの使用に

vim.command("normal! V") 

または

vim.eval("feedkeys('V')") 

を開始したい場合。しかし、例えば、呼び出し元関数にある値を返すことが必要な場合は、

import json 
# Some code that puts result into variable r 
# This won't work if r contains non-unicode strings, 
# you will have to write your own serializer in this case. 
# As far as I know, it will also fail if some characters in the string 
# can be represented only using surrogate pairs. 
vim.command("let reply=".json.dumps(r)) 
# Now in the caller function variable l:reply is defined 
関連する問題