可以从IDE借用的一些东西。因此,我们的想法是在函数体内突出显示函数参数(以及可能的范围变量名)。这是某些C的默认行为:
好吧,如果我将光标置于func
内,我希望强调参数foo
和bar
能够更好地遵循算法逻辑。请注意,foo
中名称相似的func2
不会变亮。这种奢侈可以省略......
使用本地范围的变量,我还希望本地初始化变量highlit:
最后要重新诠释奢侈品:
写这篇文章并不是那么简单。我用C来概括一下。真的,我可以更好地使用它来进行Scheme / Clojure编程:
例如,这应该识别let
,loop
,for
,doseq
绑定。
我的vimscript-fu并不那么强大;我怀疑我们需要
作为一个函数,这可以映射到一个键(如果资源非常密集)或CursorMoved
,如果不是那么慢。
好的,现在。有没有人写过这样的东西? vimscript大师是否知道如何真正开始编写这样的脚本?
很抱歉有轻微的offtopicness和糟糕的格式。随意编辑/格式化。或投票结束。
答案 0 :(得分:6)
这比听起来要困难得多,并且vimscript API不能立即使用,因为你不需要解析文件;如果您希望它运行良好,则需要逐步解析文件 。这就是为什么常规语法文件仅限于使用正则表达式执行的操作 - 当您更改几个字符时,vim可以找出语法高亮显示中的更改,而无需重做整个文件。
vim语法高亮显示器仅限于处理正则表达式,但是如果你真的这么做,你可以在vimscript中推出自己的解析器,并让它生成一个缓冲区本地语法,引用文件中的标记行和列,使用正则表达式中的\%l和\%c原子。每次更改后都必须重新运行。不幸的是,没有“文件已更改”的autocmd,但是有CursorHold autocmd,当你空闲了一段可配置的持续时间时它会运行。
答案 1 :(得分:1)
可以找到一种可能的解决方案here。不是最好的方法,因为它突出了整个文件中的每一个出现,你必须每次都给出命令(可能第二个可以避免,不知道第一个)。试试吧。