当前位置:网站首页>vim 折叠函数
vim 折叠函数
2022-08-03 07:39:00 【hjjdebug】
"vim 语句尾不能加分号
"foldexpr 表达式
"按空行折叠, 也可看作按段落折叠
fun! FoldBlank(lnum)
let ln=a:lnum
if getline(ln)=~'^\s*$' && getline(ln+1)=~'\S'
return '<1'
else
return 1
endif
endf
"按行首空格折叠
"一行字符串中的前导空格个数, make -d 的输出采用了这种格式
fun! FoldSpace(line)
let i=0
let res=0
while(i<len(a:line))
if line[i]==' '
let res = res + 1
else
return res
endif
let i=i+1
endw
return res
endf
"按{}折叠, c/c++ 函数可用此法
fun! FoldBrace(line)
let l:p1=match(a:line,'{')
let l:p2=match(a:line,'}')
if l:p1>=0 && l:p2>=0
return '='
elseif l:p1>=0
return 'a1'
elseif l:p2>=0
return 's1'
else
return '='
endif
endf
set foldexpr=FoldBlank(v:lnum)
"set foldexpr=FoldSpace(getline(v:lnum))
"set foldexpr=FoldBrace(getline(v:lnum))
"其中v:lnum 在foldexpr 中是一个变数,从1一直变到文件尾
"使用方法:
"set foldmethod=expr
"默认是按空行折叠,你可以随时设置foldexpr改变折叠方式
边栏推荐
猜你喜欢
随机推荐
MySQL or使索引失效
ArcEngine(四)MapControl_OnMouseDown的使用
[ 漏洞复现篇 ] yapi 代码执行 getshell 漏洞复现详解
DeFi明斯基时刻:压力测试与启示
9月考,如何选择靠谱正规的培训机构?
HCIP笔记整理 2022/7/18
thop 使用心得
drop database出现1010
AI中台序列标注任务:三个数据集构造过程记录
加载properties文件,容器总结
《21天精通TypeScript-5》类型注解与原始类型
pyspark df secondary sorting
Charles抓包工具学习记录
《剑指Offer》刷题之打印从1到最大的n位数
Transformer、BERT、GPT 论文精读笔记
Taro框架-微信小程序-内嵌h5页面
请求与响应:响应
【图像去雾】基于matlab暗通道和非均值滤波图像去雾【含Matlab源码 2011期】
STL - string
品牌方发行NFT时,应如何考量实用性?