如何在Vim中折叠指定的行?
要折叠指定的行,需要先创建折叠。创建折叠的方式有下面几种,都需要先处于普通模式。
方式一:z + f + motion
可以创建光标所在的当前行至motion行折叠。比如 zfgg
可以从当前光标所在行到第一行创建折叠,其中 gg
这个motion表示文件第一行; 比如 zf3j
可以从当前光标所在行到下面3行创建折叠,其中 3j
这个motion表示光标下移3行; 再比如 zfG
可以从当前光标所在行到文件结尾创建折叠,其中大写的 G
这个motion表示移动光标到文件的最后一行。
方式二:count + z + F
创建当前行之后的count行的折叠,注意这里的 F
为大写。比如 5zF
会将光标所在当前行和下面5行创建新的折叠。
方式三:z + f + %
查找光标所在的块进行块的折叠。比如将光标至于开始大括号的位置,按 zf%
按键会将大括号里面的内容折叠起来。
方式四:可以在普通模式下面使用文本对象,比如将光标置于大括号之内,zfa{
可以使大括号内的内容被创建为一个折叠。
如何在Vim中展开已经折叠的行?
z + o
在普通模式下面,将光标置于折叠关闭的所在行,然后按 zo
按键即可展开这个折叠。
z + O
在普通模式下面,将光标置于折叠关闭的那一行,然后按小写的 z
和大写的 O
按键,除了可以展开一层折叠之外,所有包含在这层折叠之内的折叠都会被展开。
这里的大小写的 O
按键的含义是 open 的意思,小写的 o
只展开一层,而大写的 O
会递归的展开所有的子折叠。
如何在Vim中将已经展开的折叠合起来?
z + c
在普通模式下面,将光标置于创建的折叠之内,然后按键 zc
即可关闭光标所在行折叠。
z + C
在普通模式下面,将光标置于创建的折叠之内,然后按小写的 z
和大写的 C
按键,当前行的所有父折叠都会被关闭。
这里大小写的 C
是 close 的缩写,小写的 c
只会关闭最近的一个层级,而大写的 C
会递归关闭光标所在行之外的折叠。
在Vim中什么命令可以切换折叠的打开和关闭?
z + a
在普通模式下面,如果折叠处于关闭状态,将光标置于折叠关闭的所在行,然后按 za
按键即可展开这个折叠;如果折叠处于打开状态,将光标置于创建的折叠之内,然后同样的按键 za
可关闭光标所在行折叠。
z + A
和小写的 za
功能类似, z
和大写 A
按键,也可以切换光标所在折叠。不同之处在于大写的 A
命令是递归的,展开折叠的时候所有的子折叠都被展开,关闭折叠的时候外层所有的折叠都被合起来。
这里大小写的 A
是 alternate 的缩写,大写 A
与小写 a
的不同之处在于是否递归处理。
在Vim中如何删除折叠?
z + d
在普通模式下面,如果折叠处于关闭状态,将光标置于折叠关闭的所在行,然后按 zd
按键即可删除光标所在行的折叠。
z + D
在普通模式下面,如果折叠处于关闭状态,将光标置于折叠关闭的所在行,然后按 zD
按键即可递归删除光标所在行的折叠。
大小写 D
代表 delete 的意思,大小写区别在于,小写的 d
只会删除一层折叠,而大写的 D
会删除所有包含子层级的折叠。
z + E
在普通模式下面,按键 zE
按键可以删除文件内的所有的折叠。
在Vim中如何使光标在折叠之间移动?
可以使用 z + motion
这个模式,比如在普通模式下面,zj
按键会移动到下个折叠的开始, zk
按键会移动到前面一个折叠的开始。
如何在Vim中激活和禁止折叠的功能?
z + N
在普通模式下面,zN
按键可以激活折叠功能。
z + n
在普通模式下面,zn
按键可以禁止折叠功能。
z + i
在普通模式下面,zi
按键可以使折叠功能的状态在激活和禁止之间切换。
Vim中关于折叠常用的配置有哪些?
:set foldenable
:这个配置可以激活被禁止的折叠功能,可以通过命令配置,具体可见本文前面一节关于激活和禁止折叠的介绍。:set foldlevel=3
:这个foldlevel配置也可以通过命令进行配置:z + M
:设置值0;z + m
z + r
:减少和增加配置的值;:set foldmethod=indent
:foldmethod选项的值:manual, indent, syntax, diff, expr, marker;
Vim视频教程 – 折叠
课程资料具体可以查看课程介绍。