2011-05-12 70 views
6

我注意到折叠文字可以显示有用的信息。他们通常显示类似更改折叠文字

+-- 5 lines: <div id="header-inner">--------------------------------------------

是否有可能改变这些行的文本?我注意到foldexpr有可能完成重新设计褶皱。
例如
+ <div id="header-inner"> : "possible comment from line above" : row 27 : length 5

谢谢

+1

:帮助foldtext应该让你开始 – 2011-05-12 19:38:44

回答

10

有几件事情,我不从你的问题理解,比如它使用foldmethod你正在使用,或什么的“行”的数字表示,但这里有一个自定义应该大致做折叠文本的功能,你想要什么:

function! MyFoldText() 
    let nl = v:foldend - v:foldstart + 1 
    let comment = substitute(getline(v:foldstart),"^ *","",1) 
    let linetext = substitute(getline(v:foldstart+1),"^ *","",1) 
    let txt = '+ ' . linetext . ' : "' . comment . '" : length ' . nl 
    return txt 
endfunction 
set foldtext=MyFoldText() 

说明:

  1. 找到行数被包含在折叠中。
  2. 从第一个折叠行之前的行中获取“注释”(并删除前导空格)。
  3. 从折叠的第一行获取文本(并删除前导空格)。
  4. 将上述信息以适当的格式组装到返回的foldtext中。

希望这会有所帮助。它应该很容易根据您的需求量身定制。

+0

谢谢。我发现vim非常强大:-)我正在使用foldmethod = expr,但是您的解决方案适用于每种折叠方法?行应参考折叠开始的行号。我将尝试v:lnum – xralf 2011-05-13 08:11:46

+1

v:lnum不起作用,但v:foldstart显示正确的行号。只有一点细节,即字符串的结尾(------------------------------------- -------)不可能删除。 – xralf 2011-05-13 08:22:21

+1

是的,foldtext适用于每种折叠方法(如果我正在从正确的行读取'comment',我只是不是,但如果它工作,那就没有问题了!)。你可以通过'set fillchars = fold:\'(注意尾部空格)去除尾部----。 – 2011-05-13 08:42:55

0

您还可以检查Steve Losh’s bitbucket repo page about vim的折叠配置。

它有非常美丽的外观,这也是非常有组织的!

要看看它是什么样子,你可能会在这youtuebe video ckeck它。

+0

不错的视频!我想我已经找到了一种新的方式来组织我的Incresing大vimrc文件。 – 2017-03-14 06:52:26