【发布时间】:2011-10-26 22:12:54
【问题描述】:
我怎样才能对特定标签进行特定的自动换行。例如,在 LaTex 中,我希望我的段落自动换行,而不是我的图形命令(它们总是很长并且超出屏幕)。
或者使用 Javascript,我希望代码的右边距为 50 列,但 cmet 仅为 40 列
【问题讨论】:
我怎样才能对特定标签进行特定的自动换行。例如,在 LaTex 中,我希望我的段落自动换行,而不是我的图形命令(它们总是很长并且超出屏幕)。
或者使用 Javascript,我希望代码的右边距为 50 列,但 cmet 仅为 40 列
【问题讨论】:
这不是内置的
您可能会使用 `formatexpr` 和 synID() 的巧妙组合自己编写脚本。我建议你先看看后者的帮助,因为它包含了鼓舞人心的样本:
for id in synstack(line("."), col("."))
echo synIDattr(id, "name")
endfor
取自:he synstack
formatexpr 通常设置为类似
:set formatexpr=mylang#Format()
因此委托给一个文件类型插件。您可以实现该函数以针对不同的语法上下文使用不同的边距。
记住
语法高亮可能会变得不同步。我不确定当光标位于大文档的 70% 并且您发出 ggVGgq 时会发生什么。它可能不会一直更新突出显示的语法(这意味着您的 formatexpr 函数会得到“错误的”synID() 值。您可以通过说类似的话来解决这个问题
:syntax sync fromstart
这可能再次影响突出显示性能,具体取决于源和突出显示脚本的大小/复杂性
【讨论】: