vi / vim中的上下文敏感词汇

时间:2011-10-26 22:12:54

标签: vim word-wrap

如何针对特定标签进行特定的自动换行。例如,在LaTex中,我希望自己的段落换行,但不能用于我的图形命令(它们总是非常长并且在屏幕上运行)。

或者使用Javascript,我想要代码的正确边距,例如50列,但评论只有40列

1 个答案:

答案 0 :(得分:1)

这不是内置的

你可以使用`formatexpr`synID()的狡猾组合自己编写脚本。我建议你首先看看后者的帮助,因为它包含鼓舞人心的样本:

for id in synstack(line("."), col("."))
    echo synIDattr(id, "name")
endfor

取自:he synstack

formatexpr通常设置为

:set formatexpr=mylang#Format()

因此委托给filetype插件。您可以实现该函数以针对不同的语法上下文使用不同的边距。


记住

  • 默认的 formatexpr (如果没有, formatprg )可能对源文件没有好处(根据我的经验,它倾向于将行串起来,就好像它们一样文字段落)。但话说回来,你可以按照你想要的方式实现它
  • 语法突出显示可能会变得不同步。我不确定当光标位于大文档的70%时会发生什么,并且您发出 ggVGgq 。它可能更新语法一直突出显示(意味着您的formatexpr函数会获得'错误的'synID()值。您可以通过说出类似的内容来解决这个问题。 p>

     :syntax sync fromstart
    

    这可能会影响突出显示性能,具体取决于源的大小/复杂性和突出显示脚本