如果你在vim插件(python-mode)中改变一个全局变量并重新加载它,这不就相当于在启动时加载.vimrc吗?

If you change a global variable in a vim plugin (python-mode) and reload it, isn’t it equivalent to just loading the .vimrc at startup?

使用Vim版本:7.4

在 Python 模式文档的这一行中:https://github.com/python-mode/python-mode/blob/01c3131343aaa3c76f8cb656b5e9f54ac90ca04b/doc/pymode.txt#L234

它说我可以使用

打开变量 (g:pymode_run)

let g:pymode_run=1,

到运行我的python文件使用“:PymodeRun”或通过'<leader>r'

使用它

如果我的Vimrc文件没有修改,默认设置为:

let g:pymode_run=1

但是,如果您的 vimrc 文件中的默认设置是

let g:pymode_run=0,

你加载你的 .vimrc,然后尝试使用 let pymode_run=1let g:pymode_run=1 (这两个是等价的,因为我们在这里处理的是全局变量),

:PymodeRun 无效。

let g:pymode_run=1后再做“:so ~/.vimrc”也是不行的

我发现的唯一解决办法是在你的 ~/.vimrc 中更改为“let g:pymode_run=1”,关闭 VIM 并重新启动 vim. 然后它按预期工作。

因为pymode_run是决定:PymodeRun是否应该运行的变量,不应该在当前VIM 会话,同时启用 运行ning :PymodeRun,而无需重新加载 VIM?

g:pymode_run好像用的是here,意思是这个变量用来决定命令:PymodeRun(以及相关的绑定)是否应该定义在第一个地方。换句话说,它在调用 :PymodeRun 时不检查,但在编辑 python 文件时检查。这就是为什么之后设置值不起作用的原因。这可能是因为不希望在编辑时更改选项(我也没有看到太多理由)。

由于在 ftplugin 中检查了此变量,我相信重新加载文件 (:ed %) 足以使 let g:pymode_run=1 生效。