0
我正在嘗試編寫一個可以自動運行vim的python腳本,但是python vim界面並沒有給我足夠的權力去做我需要的一切。我想與vim溝通,就好像我的腳本是tty(能夠發出「視覺模式」指令等)。就vim而言,我的腳本是一個運行xterm(或其他)的人。這可以在python中構建我自己的終端模擬器嗎?「腳本編寫」使用Python的粒度更大的Vim
我正在嘗試編寫一個可以自動運行vim的python腳本,但是python vim界面並沒有給我足夠的權力去做我需要的一切。我想與vim溝通,就好像我的腳本是tty(能夠發出「視覺模式」指令等)。就vim而言,我的腳本是一個運行xterm(或其他)的人。這可以在python中構建我自己的終端模擬器嗎?「腳本編寫」使用Python的粒度更大的Vim
所有非vim腳本接口大罵:與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
你不能像':exec「正常V2jx」'從該Python接口? – ninjalj