3

我正在使用AppendModelline函数将模式行添加到我的 vim 文件中:

" 在缓冲区的最后一行之后附加模式行。
" 在 LaTeX 中使用替代 () 而不是 printf() 来处理 '%%s' 模式行
"文件。
功能!附加模型线()
  let l:modeline = printf(" vim: set ts=%d sw=%d tw=%d :",
        \ &tabstop, &shiftwidth, &textwidth)
  让 l:modeline = 替代(&commentstring, "%s", l:modeline, "")
  调用追加(行(“$”),升:模式)
结束功能

但我想扩展它。它应该支持添加expandtab的当前值。
使用&expandtab,我可以获得当前值的数字表示。但是vim 不支持set et=0之类的东西。它必须设置为 [no]expandtab
我真的必须测试&expandtab并将expandtabnoexpandtab附加到l:modeline还是有办法获取当前值的字符串表示形式?
设置扩展选项卡?显示[no]expandtab,但我不知道如何在脚本中使用它(或者是否可能)。

4

1 回答 1

4

是的,你必须这样做。:redir可以捕获输出,但:redir基于 - 的解决方案至少有四行长,使用正则表达式来获取值。使用&et更干净:

… printf("… %set …", …, &expandtab ? '' : 'no', …)

注意:后面是%set(的缩写)。这里的词只是一个意外。%setexpandtabset

于 2012-12-21T20:32:59.463 回答