Vim coffescript自定义折叠
对于“标准”JavaScript,我有一个我非常喜欢的自定义折叠功能:Vim coffescript自定义折叠,vim,macvim,Vim,Macvim,对于“标准”JavaScript,我有一个我非常喜欢的自定义折叠功能: function! JavaScriptFold() setl foldmethod=syntax setl foldlevelstart=1 set fillchars=fold:\ syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend function! FoldText()
function! JavaScriptFold()
setl foldmethod=syntax
setl foldlevelstart=1
set fillchars=fold:\
syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend
function! FoldText()
return substitute(getline(v:foldstart), '{.*', '{...}', '')
endfunction
setl foldtext=FoldText()
endfunction
一个善良的灵魂能给我看一个咖啡剧本的翻译吗?
所以
会像这样折叠成第一行
testFunction = (x) ->
折叠文字对象也有好处,但函数已经很好了
PS:当然,我使用的是Vim的coffee脚本插件,因为我不知道coffee,也不知道它支持什么文字对象,对此我无能为力。但是,可以通过此设置(可以转换为模型线)实现所需的功能:
你没有指定在折叠上显示什么,所以我忽略了这个。您可以使用foldtext设置来实现此目的。请参见
:h fold foldtext
。嗨,克里斯蒂安,非常感谢你的回答。它工作得很好,但有一个问题:当多个函数(->)嵌套在一个外部函数中时,内部函数会折叠它们的内容,但它们本身不会被外部函数折叠(隐藏)?我认为这应该可以工作::setl fdm=expr fde=getline(v:lnum)=~'->$'&&indent(v:lnum)完美!非常感谢Christian,真的很感激Christian,你能解释一下它是怎么工作的吗?谢谢如果我没记错的话,这意味着所有以“->”结尾的行都会从级别1开始折叠,所有只包含空格的行都不会折叠,所有其他行都会从上一行继承折叠级别。
testFunction = (x) ->
:setl fdm=expr fde=getline(v:lnum)=~'->$'?'>1':getline(v:lnum)=~'^\\s*$'?0:'='