0

我正在尝试编写一个可以自动化 vim 的 python 脚本,但是 python vim 接口并没有给我足够的能力来做我需要的一切。我想与 vim 通信,就好像我的脚本是一个 tty(能够发出“可视模式”指令等)。就 vim 而言,我的脚本是人类运行 xterm(或其他)。这可以在没有在 python 中构建我自己的终端仿真器的情况下完成吗?

4

1 回答 1

1

所有非 vimscript 接口都被诅咒:与 vim 通信的唯一方法(除非您想编辑/获取使用缓冲区对象可用的缓冲区的内容)是executevim.command(string)在 python 中)和evalvim.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 回答