如果不在Vim中打开折叠,则无法编辑标题

时间:2009-05-23 23:32:43

标签: vim fold

假设你有一个光标处于闭合的折叠处,如图所示。

alt text http://dl.getdropbox.com/u/175564/foldEdit.png

如何在不打开Vim折叠的情况下编辑SMALLAPPS的标题?

1 个答案:

答案 0 :(得分:2)

是否要编辑折叠块的第一行,或折叠折叠时出现的字符串?如果是前者,我认为如果不打开折叠,你就无法做到。如果是后者,那么请查看foldtext选项。它可以是任何表达。评估此表达式以创建此字符串。

来自文档:

  

'foldtext'是一个字符串选项   指定表达式。这个   表达式被评估以获得   显示封闭折叠的文本。   例如:

:set foldtext=v:folddashes.substitute(getline(v:foldstart),'/\\*\\\|\\*/\\\|{{{\\d\\=','','g')
     

这显示了折叠的第一行,   用“/ ”,“ /”和“{{{”删除。   注意使用反斜杠来避免   一些要解释的字符   “:set”命令。它更简单   定义一个函数并调用:

:set foldtext=MyFoldText()
:function MyFoldText()
:  let line = getline(v:foldstart)
:  let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g')
:  return v:folddashes . sub
:endfunction

另一种方法是使用marker折叠方法。有了它,您可以在折叠标记之前输入任何字符串,并在折叠关闭时显示。

来自文档:

  

文中的标记告诉折叠的位置   开始和结束。这允许你   精确指定折叠。这个   将允许删除和放置   折叠,没有包括的风险   错误的台词。 'foldtext'   选项通常设置为   标记出现之前的文本   折叠线。这使得它成为可能   给折叠命名。

     

标记可以包含一个级别,或者   可以使用匹配对。包括一个   级别更容易,您不必添加   结束标记并避免问题   不匹配的标记对。例如:

/* global variables {{{1 */
int varA, varB;