5
A
回答
1
最可能的是,你可以创建一个函数来检查文件是否有任何褶皱,如:
function HasFoldedLine()
let lnum=1
while lnum <= line("$")
if (foldclosed(lnum) > -1)
return 1
endif
let lnum+=1
endwhile
return 0
endfu
现在你可以用一些autocommand
使用它,例如:
au CursorHold * if HasFoldedLine() == 1 | set fdc=1 | else |set fdc=0 | endif
HTH
4
当文件变得足够大时,我的方法比@Zsolt Botykai更快。对于小文件,我可以想象时间差异是微不足道的。该函数不是检查每一行的折叠,而是简单地尝试在折叠之间移动。如果光标从不移动,则没有折叠。
function HasFolds()
"Attempt to move between folds, checking line numbers to see if it worked.
"If it did, there are folds.
function! HasFoldsInner()
let origline=line('.')
:norm zk
if origline==line('.')
:norm zj
if origline==line('.')
return 0
else
return 1
endif
else
return 1
endif
return 0
endfunction
let l:winview=winsaveview() "save window and cursor position
let foldsexist=HasFoldsInner()
if foldsexist
set foldcolumn=1
else
"Move to the end of the current fold and check again in case the
"cursor was on the sole fold in the file when we checked
if line('.')!=1
:norm [z
:norm k
else
:norm ]z
:norm j
endif
let foldsexist=HasFoldsInner()
if foldsexist
set foldcolumn=1
else
set foldcolumn=0
endif
end
call winrestview(l:winview) "restore window/cursor position
endfunction
au CursorHold,BufWinEnter ?* call HasFolds()
0
(无耻的自我插件)
我创建了一个插件来做到这一点叫Auto Origami,仿照@ SnoringFrog的answer。
删除下面的例子到你的vimrc安装它,看魔术发生后(读:help auto-origami
找出如何微调吧):
augroup autofoldcolumn
au!
" Or whatever autocmd-events you want
au CursorHold,BufWinEnter * let &foldcolumn = auto_origami#Foldcolumn()
augroup END
相关问题
- 1. 排序Vim的褶皱
- 2. vim - 有些褶皱没有被保存
- 3. 褶皱与递归二郎
- 4. 固定点上的Monoidal褶皱
- 5. 褶皱部从布局,JAVA的Android
- 6. 如何在切割和粘贴时保留VIM中的褶皱?
- 7. 我想自定义文本VIM显示在倒塌的褶皱
- 8. Vim的java的折叠不承认褶皱
- 9. 未折叠褶皱的特性是什么?
- 10. Vim的褶皱不与语法同步/不正确地插入
- 11. 跟踪能给褶皱处理的“反转”
- 12. sklearn RandomizedSearchCV提取混淆矩阵针对不同的褶皱
- 13. jQuery和褶皱效果:直接隐藏无动画
- 14. 创建自定义褶皱插入符CV
- 15. 为什么这些褶皱停在头部/尾部?
- 16. 停止VIM打开所有后续的关闭褶皱时创建一个新的
- 17. 插入符号中的rfeControl函数是否会产生分层褶皱?
- 18. 在Python中使用褶皱神经网络与千层面错误
- 19. 有条件的时候
- 20. 打褶元件从方案
- 21. javascript有时候CET有时候CEST
- 22. 将图像/纹理映射到预定义的不平整表面(带褶皱,马克杯等的T恤)
- 23. 什么时候一个.c文件没有关联.h文件?
- 24. gVim和gVim easy有什么区别?
- 25. GVIM AnsiEsc插件
- 26. 谈到一个线TCL文件的GVIM
- 27. 不正确的文件夹gVim 7.2
- 28. gvim中的外部修改文件
- 29. 跳出gvim中的“主乳胶文件”
- 30. E488:尾随字符:#### gvim的源文件
这是相当缓慢的。 – 2013-11-24 10:53:14
你是对的,现在向我们展示一个更好的解决方案。 – 2013-11-24 14:18:41
我打算,后来:) – 2013-11-24 15:55:15