我想在折叠折叠中自定义文本vim节目

时间:2010-10-24 19:22:07

标签: vim

我使用折叠作为评论,如

#
Stuff between the # are comments and automatically folded
#  

但折叠时看起来像这样

+--  4 lines: #--------------------------------------------------------------

我宁愿让他们说

+-- 4 Stuff between the # are comments and automatically folded

并且不会突出显示,或者在黑色终端上使用白色背景的任何东西。

我认为它是foldtext变量,正则表达式超出了我的范围。

3 个答案:

答案 0 :(得分:2)

除了ZyX显示的方法之外,您还可以指定一个单独的函数来构建文本,如果您想要进行更复杂的处理,这将特别有用。如,

setlocal foldtext=MyFoldText()

function! MyFoldText()
  " do whatever processing you want here
  " the function will be called for each folded line visible on screen
  " the line number of each fold's "head" line will be in v:foldstart
  " last line of fold in v:foldend
  " can do whatever processing you want, then return text you want 
  " displayed:

  return my_processed_fold_text

endfunction

就突出显示而言,整个折叠文本行将具有相同的突出显示,这由“折叠”突出显示组确定。所以,如果你想让它们成为黑色背景上的白色文字:

:hi Folded guifg=white guibg=black ctermfg=white ctermbg=black

或者如果你想要它们的灰白斜体:

:hi Folded guifg=#bbbbbb guibg=black gui=italic ctermfg=white ctermbg=black

答案 1 :(得分:1)

是的,它是foldtext选项,但您不需要此处的正则表达式:将其放入~/.vim/ftplugin/{filetype}.vim(其中{filetype}应替换为文件类型,此类折叠已定义):

setlocal foldtext='+-'.v:folddashes.'\ '.getline(v:foldstart+1)

答案 2 :(得分:0)

:hi Folded guifg=green guibg=black ctermfg=green ctermbg=black

在灰色上做得很漂亮和绿色,我可以愚弄它以使它看起来很漂亮

:setlocal foldtext='Comment'.v:folddashes.'\ '.getline(v:foldstart+1).getline(v:foldstart
+2)

将填写折叠文本,即使我在#之后跳过一行,我可能会这样做。

谢谢!现在它更加可以忍受和有用。