我经常遇到没有折叠的C代码。如果没有折叠,特别是对于长文件,阅读它们会很烦人。我怎么折叠它们?
答案 0 :(得分:12)
根据语法折叠
:set foldmethod=syntax
如果您想手动对要折叠的位进行操作
:set foldmethod=manual
然后通过选择/移动并按zf来创建新的折叠 e.g。
shift-v j j zf
(忽略空格)
编辑:另请参阅此答案的注释,用于缩进和标记foldmethods。
答案 1 :(得分:5)
我想你可能混淆了术语。你需要“包装”还是“折叠”。包装是由于它们的长度通常不适合在屏幕上的线被包裹,即在屏幕上的几个连续线上显示(实际上,它是一行,在几行中 - 很难解释,最好看到实践)。
在vim包装中由
设置:set wrap
打开它,
:set textwidth=80
确定vim应该包装文本的位置(80个字符通常是一个很好的衡量标准)。
另一方面,折叠是完全不同的事情。它是vim将几行代码(例如,一个函数)折叠成一行代码的那个。它有助于提高代码的可读性。 Vim有几种折叠方法,如果你你可以看到所有这些方法:help folding
你在寻找什么,我认为是,语法折叠,但我可能是错的。我建议阅读帮助页面,它不长,而且非常有用。
答案 2 :(得分:2)
我已经推出了fold plugin for C and C++。与缩进和基于标记的折叠相比,它超出了语法折叠所做的(可能是可以改进,我不知道),并且留下更少的噪音并且没有真正有用的东西展开。
警告:为了获得不错的反应时间,我不得不进行一些简化,有时结果非常混乱(我们必须输入zx
来修复它。)
这是一个小小的截屏视频,看看该插件如何折叠正确平衡的C ++源代码,目前尚未修改:(
答案 3 :(得分:1)
在vi中(与vim相反)答案是:
:set wm=1
这会将换行边距设置为行尾之前的一个字符。这不是具有可变尺寸窗户的世界上最好的规格(当难以改变尺寸时,绿色屏幕是有意义的。)
这意味着在vim中还有另一种方法:
:set textwidth=30
答案 4 :(得分:0)
你可能想要设置
:set foldmethod=syntax
但不要手动放入!多数人错过了其中一个Vims最大的功能,即已经内置了数百种文件类型的自定义设置。为此,请将其添加到〜/ .vimrc
filetype plugin on
filetype indent on
文件类型检测主要基于扩展名,在本例中为* .c文件。有关详细信息,请参阅:help:filetype。您还可以自定义这些基于文件类型的设置。
答案 5 :(得分:0)
实际上,还有另一种非常直接有效的方法,即使用foldmethod = marker
并将foldmarker
设为{,}
。然后折叠结果如下:
set foldlevel=1
或更多)zo
使用level-1打开它时,这是正常函数的样子。另外,要通过语法进行折叠需要一些额外的工作,这里有一个很好的tutorial。但我认为折叠marker={,}
已足够,最重要的是,它简单而整洁。