4

次のように、関数定義で始まる bash スクリプト ファイルがあります。

#!/bin/bash
# .....
# .....
function test {
...
...
}
...
...

私はvim 7.2を使用g:sh_fold_enabled=1しており、bashで折りたたみが有効になるように設定しています。問題は、機能テストの折り畳みが正しく終了しないことです。つまり、ファイルの終わりまで続きます。次のようになります。

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

関数自体は約 40 行で、次のようなものが必要です (「イメージ」は 1000 語を超えると彼らは言います...):

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

この問題の良い解決策を知っている人はいますか?

4

4 に答える 4

1

私はいくつかの調査を行い、問題を解決する方法を見つけました: vim がファイルの最後まで関数を折り畳まないようにするには、構文領域にスキップステートメントを追加する必要がありましたshExpr(ファイル内sh.vimで、通常は のような場所に配置されます/usr/share/vim/vim70/syntax/) 。 :

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

この変更により、実際には関数グループに属している場合でも、構文ファイルはそれらが shExpr グループ{}属していると見なされなくなります。とにかく、それは私がそれを理解した方法です。

注: この修正は、次の構文でのみ機能します。

function test
{
....
}

これのためではありません:

function test {
....
}

最後のバグの簡単な修正は、@shFunctionList クラスターから shExpr を削除することです。

于 2009-01-15T17:43:06.787 に答える
0

動作するはずですが、構文ファイルにバグがあるようです。折り畳み領域は実際には「関数」という単語で始まり、閉じている「}」まで続けようとしますが、「{...}」領域の強調表示が閉じている「}」を引き継ぎ、折り畳みは別の単語を検索し続けます。 1。別の '}' を追加すると、これを実際に見ることができます。

function test {
    ...
}
}
于 2009-01-05T21:27:27.033 に答える