vim を自動化できる python スクリプトを作成しようとしていますが、python vim インターフェイスでは、必要なすべてを実行するのに十分な力が得られません。スクリプトがttyであるかのようにvimと通信したい(「ビジュアルモード」命令などを発行できる)。vimに関する限り、私のスクリプトはxterm(または何でも)を実行する人間です。これは、Python で独自のターミナル エミュレータを構築せずに実行できますか?
1 に答える
1
execute
vimscript 以外のすべてのインターフェイスは呪われています: vim と通信する唯一の方法は(バッファー オブジェクトを使用して利用可能なバッファーの内容を編集/取得する場合を除きます)、( vim.command(string)
Python では) とeval
( 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
于 2011-10-23T09:34:56.673 に答える