1

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

替代文字 http://dl.getdropbox.com/u/175564/foldEdit.png

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

4

1 回答 1

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

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

从文档:

文本中的标记告诉折叠开始和结束的位置。这使您可以精确地指定折叠。这将允许删除和折叠,而不会有包含错误行的风险。'foldtext' 选项通常设置为使标记之前的文本显示在折叠行中。这使得为​​折叠命名成为可能。

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

/* global variables {{{1 */
int varA, varB;
于 2009-05-23T23:57:54.107 回答