有没有办法命名vim折叠?

时间:2016-05-04 01:02:52

标签: vim fold

有没有办法命名vim折叠?

据我所知,通过使用注释或foldtext方法,您可以有效地命名折叠。但是,我正在编写一个纯粹的JSON Azure资源管理器模板,因此它不允许注释。

1 个答案:

答案 0 :(得分:1)

折叠"名称"可以通过foldtext选项设置。这就是我为ARM模板所做的事情:

set foldtext=ARMFoldText()

function! ARMFoldText()
" Between foldstart and foldend, return the line that has the name
let i = v:foldstart + 1
while i < v:foldend
  let foldName = getline(i)
  if foldName =~# '^\s*"name":'
    break
  endif
  let i += 1
endwhile
"if foldlevel = 2 return foldName else return foldtext
if foldlevel(v:foldstart) == 2
  return foldName
else
  return foldtext()
endif
endfunction

这就是我的自定义折叠表达式的样子:

  1 {
  2   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  3   "contentVersion": "1.0.0.0",
  4 +-- 24 lines: "variables": {---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 28 +-- 16 lines: "parameters": {--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 44   "resources": {
 45    "name": "[variables('vnet-name')]",-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 66       "name": "[variables(ip-public-name)]",--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 75       "name": "[variables('lb-web-01')]",--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
115       "name": "[variables('nic-01-name')]",------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
148       "name": "[variables('sg-app-01')]",--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
172       "name": "[variables('sg-web-01')]",-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

还有很多其他的例子可供使用。我引用的是以下内容:

http://dhruvasagar.com/2013/03/28/vim-better-foldtext http://vim.wikia.com/wiki/Customize_text_for_closed_folds