在vim中突出显示函数体中的参数

有些东西可以从IDE中借用。 所以这个想法是突出显示函数体内的函数参数(也可能是范围variables名)。 这是一些C的默认行为:

简单的vim突出显示

那么,如果我把光标放在func我希望看到突出显示的foobar参数更好地遵循algorithm逻辑。 请注意, func2名称相似的foo不会被高亮显示。 这豪华可以省略,但…

func高光

使用本地作用域variables,我也想在本地初始化variableshighlit:

突出显示<code> i </ code>里面的for

最后重新展示奢华:

再次豪华

写这个不是很微不足道。 我用C来给出一个大概的想法。 真的,我可以更好地使用Scheme / Clojure编程:

为clojure也里面让构造

这应该承认letloop ,例如doseq绑定。

我的vimscript-fu不是那么强大。 我怀疑我们需要

  • parsing(非正则expression式?)来自游标下的函数定义的参数。 这当然是语言特定的。 我的首要任务是Clojure。
  • 定义一个语法区域来覆盖给定的函数/范围
  • 给出所需的语法匹配

作为一个函数,这可以映射到一个键(如果非常耗费资源)或CursorMoved如果不是很慢)。

好吧,现在 有没有人写/find这样的东西? vimscript大师有一个关于如何真正开始写这样的脚本的想法吗?

对不起,有点偏离和不好的格式。 随意编辑/格式。 或者投票结束。

这比起听起来要困难得多,而边界线也不可能,因为你不需要parsing文件; 如果你希望它工作的很好,你需要逐步parsing文件。 这就是为什么常规语法文件受限于正则expression式的原因 – 当您更改几个字符时,vim可以找出语法突出显示中发生了什么变化,而无需重新整理文件。

vim语法高亮显示仅限于处理正则expression式,但是如果你愿意这么做的话,你可以在vimscript中使用你自己的parsing器,并且生成一个缓冲区本地语法来引用文件中的行和列,在正则expression式中使用\%l和\%cprimefaces。 这将不得不在每次更改后重新运行。 不幸的是,没有“文件改变”的autocmd,但是有一个CursorHold autocmd,当你闲置一段时间后,它会运行。

可以在这里find一个可能的解决scheme 不是最好的方式,因为它突出显示了整个文件中的每一个事件,并且你必须每次都发出命令(大概第二个可以避免,不知道第一个)。 尽pipe看一看。