下面是一个存在 Python 问题的 vim 插件的示例:
Error detected while processing function UltiSnipsEdit:
line 6:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\2c.2c2c\.vim\bundle\ultisnips\plugin\UltiSnips\__init__.py", line 981, in file_to_edit
os.mkdir(path)
WindowsError: [Error 3] The system cannot find the path specified: u'C:\\Users\\2c.2c2c\\vimfiles\\UltiSnips'
line 16:
E121: Undefined variable: file
E15: Invalid expression: ':'.mode.' '.file
vim 插件制作者都说这是你的 python 环境的问题。我拥有最新的 27x 和 3xx 版本的 python,并使用来自的预编译 vimhttp://tuxproject.de/projects/vim/。我卸载/重新安装了其中一个版本,安装了两个版本,设置了和没有设置路径。似乎没有任何效果。
:版本
返回两个版本的 python/dyn,尽管我已经尝试过更改路径/卸载-重新安装以使它们单独存在而不是单独存在等。看看是否有任何变化。此外,基本 python 似乎确实有效,我可以这样做
:python 打印(“你好”)
没有问题。
我也有点困惑为什么它要检查该目录...Vundle 会将其安装的任何东西的 rtps 添加到 ~/.vim/bundle/addon 中。
无论如何,我还没见过有人在 Windows 上遇到过这样的问题,所以这些信息都没什么用。任何帮助我都感激不尽。
答案1
错误源自文件files_to_edit()
“C:\Users\2c.2c2c.vim\bundle\ultisnips\plugin\UltiSnips__init__.py”中的函数。给定一个文件类型(例如“markdown”),此函数会尝试找出系统中带有相应片段的文件(“markdown.snippets”)可能位于的位置。该函数检查几个地方:
- 如果全局变量
g:UltiSnipsSnippetsDir
存在,那么它会查找该文件夹 - 如果存在全局变量
g:UltiSnipsSnippetDirectories
,则它会遍历其中的项目rtp
,从变量中附加目录,并查看生成的文件夹 - 如果以上均未设置,则它会遍历中的项目
rtp
,附加“UltiSnips”,并查看结果文件夹
根据您的错误信息
WindowsError:[错误 3] 系统找不到指定的路径:u'C:\Users\2c.2c2c\vimfiles\UltiSnips'
它最终选择了第三个选项。出于某种原因,它没有从 中选择正确的项目rtp
。你可以做什么来解决这个问题,而不需要深入研究插件源代码并调试它,它g:UltiSnipsSnippetsDir
明确地设置为片段存储的位置,即“C:\Users\2c.2c2c.vim\bundle\ultisnips\UltiSnips”。只需删除该行
let g:UltiSnipsSnippetsDir = "C:\Users\2c.2c2c\.vim\bundle\ultisnips\UltiSnips"
在你的 .vimrc 中的某个地方。