检查 VimL 脚本的语法

4

我有一个相当庞大的vim脚本(.vim文件,使用viml语法)。我希望检查(但不执行!)该文件是否存在简单的语法错误。

我该如何完成这个任务?

我只需要进行一个非常粗略的语法检查。类似于perl -cpyflakes的东西。


1
嗯,你不执行它有具体的原因吗? - Rook
有很多原因。脚本需要我没有的输入,或者它会对 git 仓库进行更改,我不想每次测试脚本时都这么做。我相信有创意的头脑可以想到更多。 - bukzor
Vim的语法高亮器不够吗? - Benoit
1
@Benoit,你知道那个问题吗?就是无论 map 出现在哪一行,只要不在括号内部,它都被认为是一个命令。但当你把函数调用的开头放在一行上并使用行继续符时,会认为最后一个闭合括号是错误的,除非你在函数内部这么做。这样的错误还有更多例子:Vim 对 VimL 文件的语法高亮是我使用的其他语言中最糟糕的,所以我们绝不能完全依赖它。 - ZyX
4个回答

2

非常有趣!我一定要试试看。如果它有效,我会努力将其集成到syntastic中。 - bukzor

1

我不认为(尽可能确定)存在这样的工具。VimL是Vim(仅限于Vim)的内部语言,并且没有为其开发的许多工具。

我在vim.org和其他几个地方尝试搜索,但没有找到。这并不奇怪,因为我也从未听说过这样的工具。

因此,您要么只能运行脚本,要么切换到像Python、Perl或Ruby这样的外部语言。


有没有Vim函数可以读取.vim文件而不执行它? - bukzor
@bukzor - 我不这么认为。老实说,我看不出有必要这样做。通常的做法就是运行代码。VimL 不是那么大的语言,人们不会用它来开发企业级应用程序。 - Rook

0

https://github.com/osyo-manga/vim-watchdogs

Vim Watchdogs,显然是vim的语法检查器,它支持许多语言,包括vimL。

如果你使用Vundle,只需将以下内容添加到你的vimrc中:

Plugin 'git://github.com/osyo-manga/vim-watchdogs.git'

..然后运行:

:PluginInstall

..来设置它(Vundle是一个非常好用的插件管理器)。如果你有syntastic,你可能需要小心并先禁用它,然后看看它是否是一个合适的替代品(因为它声称支持所有这些语言)。

当你有多个语法检查器运行时,最好的方法是使其各自负责特定的语言。如果你不这样做,可能会导致冲突、重复或错误的指导。最糟糕的情况下,你会遇到以上所有问题和更多。

确保您始终备份您的~/.vim目录(或者如果您在全局层级上安装东西,则备份VIMRUNTIME目录),您会因此而感到非常高兴。希望这对您或其他人有所帮助,祝您好运!很抱歉您必须等待7.5个月才能得到回复,呵呵 :)

据我所知,这只是利用了@ynkdir提到的vimlint。 - bukzor

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接