Все не-vimscript интерфейсы прокляты: единственный способ связи с vim (если вы не хотите редактировать / получать содержимое буфера, доступного с использованием объекта буфера) - это execute
(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