如何在 Vim 中启用和执行代码折叠?
我必须改变什么~/.vimrc
吗?
我输入z+a和z+c和z+o没有任何反应。
这是一篇关于折叠的文章:Vim 中的代码折叠。
car*_*ist 68
Vim 的默认折叠方法manual
意味着折叠是手动创建的;否则,没有折叠到关闭或打开使用za,zo或zc作为你说明。但是,你可以通过创建一个折叠zf{motion}
在普通模式或zf在可视模式; 例如,zfj在正常模式下为当前行和下一行创建一个折叠。
indent
@Anthon 接受的答案描述了如何将折叠方法设置为indent
;即折叠由缩进的级别定义。
syntax
更方便的是,可以根据当前缓冲区的语言语法自动创建折叠。如果使用的是一种编程语言,让我们称之为大号,并且已折叠的定义大号(例如已安装Vim插件,其中的折叠信息的大号定义;如c.vim为C / C ++,或蟒-mode for Python),您只需要将折叠方法设置为syntax
:
set foldmethod=syntax
Run Code Online (Sandbox Code Playgroud)
就是这样。处理折叠最有用的命令是:
foldlevel
一。foldlevel
一。foldlevel
到零 - 所有折叠都将打开。Ant*_*hon 59
不,你不必从你链接到你的页面放命令~/.vimrc
,你可以只发出后键入他们:
在vim
得到命令提示符。
但是,如果你把这些行:
set foldmethod=indent
set foldnestmax=10
set nofoldenable
set foldlevel=2
Run Code Online (Sandbox Code Playgroud)
如您提供的链接所示,在您的~/.vimrc
, 您不必每次要在文件中使用折叠时都输入它们。在set nofoldenable
确保了当打开,文件是“正常的”,即不折叠。
小智 17
您不必系统地使用它:我通常按动作或部分手动选择折叠。例如,折叠一个段落是zfip
,折叠接下来的 20 行是zf20j
。使用za
切换和zd
清除。
这需要更多的工作,但可以让您的折叠反映手头的任务。
您可以folding
在当前会话中启用,如 @Anthon 的回答。但如果你想让它永久存在,你必须至少将这一行设置为.vimrc
折叠工作:
set foldmethod=indent
Run Code Online (Sandbox Code Playgroud)
indent
是一种折叠,你可以看到更多:help foldmethod
'foldmethod' 'fdm' string (default: "manual")
local to window
{not in Vi}
{not available when compiled without the +folding
feature}
The kind of folding used for the current window. Possible values:
fold-manual manual Folds are created manually.
fold-indent indent Lines with equal indent form a fold.
fold-expr expr 'foldexpr' gives the fold level of a line.
fold-marker marker Markers are used to specify folds.
fold-syntax syntax Syntax highlighting items specify folds.
fold-diff diff Fold text that is not changed.
Run Code Online (Sandbox Code Playgroud)
现在,每次使用 打开文件时vim
,您都可以看到代码按照您设置的方法折叠。然后你可以使用za
,, zc
.zo