3

昔、MultiEditというエディタがありました。すべての強力なVIMにはない機能があります。マルチエディットでは、ホットキーを押すと、目次(別名、圧縮モード、別名アウトライン)のようなものが表示され、現在のファイルのすべての関数の1行目(Cソースとします)しか表示されませんでした。次に、カーソルを必要な機能に移動し、Enterキーを押すと、モードが通常に切り替わり、必要な機能が実行されます。1つのファイルに多くの関数を入れるのが好きな人にとって非常に便利です。この機能の使い方は非常に簡単でした。タイトル行を選択するための正規表現を入力するための1つの構成オプションと、モード切り替えのための1つのホットキーです。

VIMには折りたたみがあります。しかし、これは異なります。折りたたむと、ファイルの一部が非表示になり、folded-lines-indicatorが表示されます。table-of-content-displayの折り畳みに何を非表示にするかを指定することは、はるかに困難です。折り畳みをタイトル行で開始し、次のタイトル行の前で終了する必要があります。これは、タイトルを選択するための単純な正規表現よりも複雑です。

私はこの機能がとても欲しかったので、VIMをあまり知らなくても、このマルチエディットの動作をエミュレートするためにVIMマクロを作成しました。VIMフォールディングモジュールの複雑さを理解するよりも、新しい言語を学び、マクロを書く方が簡単だったので、私はそれを部分的に書きました。残念ながら、VIMをアップグレードした後、このマクロは機能しなくなりました(無限ループ?)。ずっと前に書いたのですが、VIMについてほとんど知らなかったことがすべて忘れられてしまい、今は修正できませんでした。(編集:スクリプトを修正しました。リンクを提供してくれた@romainlに感謝します)。

私の質問は、VIMでの表示のようなこの目次を取得する方法です。

4

4 に答える 4

8

Drew Neilによるこの最近のvimcastは、折りたたみの一般性を説明しており、これは、(おそらく)あなたが求めている種類の折りたたみを作成するプロセスを経ています。

使用する言語とコーディングスタイルに応じて、

set foldmethod=marker
set foldmarker={,}

そしてzMあなたを長い道のりに導くことができます:

CSSフォールディング

表示する情報をカスタマイズしたい場合は、上記の2番目のリンクがほぼ間違いなく必要なものです。

于 2013-01-17T07:49:39.010 に答える
2

ctagsとvimプラグインのタグバーを見てください。

于 2013-01-17T15:24:24.957 に答える
1

また、vimプラグインが拡張機能Unite-Oulineと結合して、 説明に非常に近い動作を提供することも確認してください。

于 2013-01-17T17:17:52.093 に答える
1

それは素晴らしいことではありませんが、あなたは試しましたsetlocal foldmethod=syntaxか?Windowsの7.3ではまともな仕事をしているようです。...コーディング標準には、新しい行ではなく行の終わりにブロックの開始中括弧があることに気づきましたが、新しい行に変更すると、機能が大幅に低下します。

于 2013-01-19T03:04:35.633 に答える