VIM:vim.command('y')按预期工作,但vim.command('gv')启动GUI而不是视觉选择

时间:2014-11-02 10:15:37

标签: vim

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吗?

2 个答案:

答案 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)