2009-01-05 123 views
4

我有與一個函數定義開始bash腳本文件,這樣的問題慶典。問題是功能測試的摺疊沒有正確結束,即它持續到文件結束。它看起來是這樣的:A和在vim摺疊的bash功能

#!/bin/bash 
# ..... 
# ..... 
+-- 550 lines: function test {---------------------------------------- 
~ 
~ 

的功能本身就是約40行,和我想要的東西,lookes像這樣(「圖片」說比thousend詞,他們說...):

#!/bin/bash 
# ..... 
# ..... 
+-- 40 lines: function test {---------------------------------------- 
... 
... 
... 
~ 
~ 

有沒有人知道這個問題的一個很好的解決方案?

回答

0

我做了一些研究,發現了一種方法來解決這個問題:從摺疊功能,直到文件的末尾停止VIM,我有添加一個跳躍語句的語法區域爲shExpr(文件sh.vim中,通常放在像/usr/share/vim/vim70/syntax/某處):

syn region shExpr ... start="{" skip="^function.*\_s\={" end="}" ... 

這種變化來自以爲{}屬於shExpr組停止語法文件,當他們實際上屬於功能組。無論如何,這就是我的理解。

注意:此修復程序只適用於以下幾種語法:

function test 
{ 
.... 
} 

而不是這樣的:

function test { 
.... 
} 

一個快速和骯髒的修復過去的錯誤是從去除shExpr @ shFunctionList集羣。

0

它應該只是工作,但似乎有語法文件中的錯誤。摺疊區域實際上從單詞'function'開始,並嘗試繼續關閉'}',但'{...}'區域的突出顯示接管關閉'}',摺疊繼續搜索另一個區域一。如果添加另一個「}」,你可以在行動中看到這一點:

function test { 
    ... 
} 
} 
0

Reddit似乎有一個更簡單的解決方案。

引述在帖子作者:

選項我用的都是:

syntax=enable 

filetype=sh 

foldmethod=syntax 

let g:sh_fold_enabled=3 

g:is_sh=1 

編輯:解決方法

的vim -u NONE -c「讓G:sh_fold_enabled = 7' -c ':上 'file.sh設置FDM =語法' -c' SY

g:sh_fold_enabled = 4似乎是討論中商定的摺疊級別。這個解決方案對我來說是完美的。我不必編輯語法文件。

編輯:g:sh_fold_enabled = 5實際上是正確的。不是4。 另外,正如海報在Reddit上顯示的那樣,這些命令必須在vimrc中的任何其他設置之前進行,除了插件之外。