我继承了一些基于vim的折叠标记的c ++代码,如下所示:
// CONSTRUCTORS/DESTRUCTORS /*{{{*/
Foo::Foo()
{
}
Foo::~Foo()
{
}
/*}}}*/
我需要在.vimrc中添加什么才能启用zm和space-bar等折叠切换?
使用我当前的设置,当我点击空格键或zm时,vim什么都不做。
答案 0 :(得分:6)
折叠的默认键绑定是za
或zm
(虽然zm
我认为只关闭折叠,而za
切换它们,所以你应该添加以下行你的.vimrc:
set foldmethod=marker
启用由标记触发的折叠(代码中的{{{
内容)
nnoremap <space> za
使space
能够在正常模式下触发折叠。
但是!如果您不确定是否要在其他文件中启用折叠,可以使用autocmd
,如下所示:
autocmd FileType vim,c++,txt setlocal foldmethod=marker
这将确保折叠仅适用于vim,c ++和文本文件。
顺便说一下,你发布的内容只是vim guru Steve Losh在this article中提到的一种折叠。阅读它以了解有关折叠的更多信息。这太酷了。
答案 1 :(得分:0)
好吧,在谷歌搜索了一下后,我发现这似乎有效:
set foldmethod=marker |~
nnoremap <space> za
答案 2 :(得分:0)
如果您只有几个文件,或者您只想基于每个文件控制选项,则可能需要使用modeline
。当我下载一个z-shell脚本时,我的折叠介绍来了,当我打开它时,惊讶地发现所有东西都折叠了。在文件末尾找到类似的内容:
# vim:ts=4:sw=4:ai:foldmethod=marker:foldlevel=0:
更改评论以匹配您的代码类型,并确保在单词vim
之前有空格。一如既往的好地方::help modeline
和:help folding
。如果在构建时未设置set modeline
,则可能必须将modeline
添加到.vimrc文件中。