在Python中将Vim键码字符串(“ <c-z>”)转换为实际键码编号(^ Z = 26)

时间:2018-11-27 05:13:18

标签: python vim

我正在尝试将Vim 8.0配置(~/.vimrc)移植到Python。也就是说,我将Vim选项设置为vim.options映射上的字段:

import vim

# set wildmenu
vim.options['wildmenu'] = True
# set wildcharm=<C-Z>
vim.options['wildcharm'] = ord('^Z') # [Literal ^Z (ASCII 26), CTRL-V CTRL-Z]
# set wildchar=<F10>
vim.options['wildchar'] = -15211 # extracted from Vim

wildcharwildcharm Vim选项的类型为“数字”。据我了解,他们期望一种键码(至少在简单情况下,它是所讨论字符的ASCII码)。

在Vimscript中,当您说诸如set wildchar=<F10>之类的内容时,Vim会将特定于Vim的文本表示形式转换为数字键代码。 在Python中,情况并非如此(vim.options['wildchar'] = '<F10>'给出TypeError)。

在简单情况下,可以在包含按字面意义键入的控制字符的字符串上使用ord()(请参见上文中的Ctrl-Z)。但是,像F10这样的键会产生多个字符,所以我不能在上面使用ord()

最后,我希望能够执行以下操作:

vim.options['wildchar'] = magic('<F10>')

magic()函数存在吗?


编辑:我不是在问如何从Python(即vim.command(...))调用Vimscript代码。
我知道可以用这种方法来解决包含的问题,但是我想问一个不同的问题。在这里提问。

1 个答案:

答案 0 :(得分:-1)

:python vim.command("set wildchar=<F10>")

有关更多说明,请参见vim.command documentation