function! Cut()
python3 << EOF
import vim
cw = vim.current.window
pos = cw.cursor
cr = vim.current.range
vim.command('y')
vim.eval('gv')
#print(cr)
EOF
endfunction
我手动选择了一堆行。然后输入 M-x 进行剪切。调用上面的函数。我跑'y'来划线,现在我需要重新选择'gv',然后'd'删除。不幸, 它正在做:gv vs普通的 gv - 还有其他一些我可以使用的vim.command吗?
答案 0 :(得分:1)
遵守这些命令的模式非常重要。 gv
是普通模式命令,但vim.command()
采用 Ex命令(来自命令行模式),根据{{1}}:
:help python-command
因此,您的vim.command(str)
Executes the vim (ex-mode) command str. Returns None.
被解释为y
,:yank
被解释为gv
,解释了您所看到的行为。
幸运的是,有一个Ex命令可以运行正常模式命令,恰当地命名为:gvim
。所以,解决方案是使用
:normal
(vim.command('normal! gv')
避免考虑映射,建议使用。)
答案 1 :(得分:0)
vim.command(&#39;:normal!gv&#39;)(感谢Freenode #vim IRC上的tek0)