1

「リストの内容で辞書を検索する方法」について質問を投稿しましたが、El Isra、romainl、Zyxから回答があり、質問を解決しました。

しかし、(todoリストの観点から)特定の方法で結果を表示すること、つまり、作成されたカテゴリ(または「ラベル」)ごとのビューを表示することは興味深いかもしれないと思いました。

結果の行は次のとおりです。

Call Tom about the Foo project @Tom &Foo
Complete the summary of the Bar project and send it to Thomas &Bar @Tom
Have Susan send me and Tom her forecasts for the Foo project @Susan @Tom &Foo

Vimでこれらの結果をカテゴリ(または「ラベル」)ごとの行の後にこのように表示することは可能ですか(空白行で区切られています):

Call Tom about the Foo project @Tom &Foo
Complete the summary of the Bar project and send it to Thomas &Bar @Tom
Have Susan send me and Tom her forecasts for the Foo project @Susan @Tom &Foo

@Tom
Call Tom about the Foo project &Foo
Complete the summary of the Bar project and send it to Thomas &Bar
Have Susan send me and Tom her forecasts for the Foo project @Susan &Foo

@Susan
Have Susan send me and Tom her forecasts for the Foo project @Tom &Foo

&Foo
Call Tom about the Foo project @Tom
Have Susan send me and Tom her forecasts for the Foo project @Susan @Tom

&Bar
Complete the summary of the Bar project and send it to Thomas @Tom

実際、私はこれがロータスアジェンダの進め方(「ビュー」)であったことを思い出しましたが、はるかに洗練された方法で...

4

2 に答える 2

1

これらのグループ化された結果を元のtodoファイルに実際に挿入するのではなく、フィルター処理された個別のリストを作成する必要があると思います。そのためには、クイックフィックスリストが理想的です。

渡されたカテゴリのリストを反復処理し、:vimgrepaddToDoリストに対してコマンドを実行する関数を作成すると、次のようになります。

:vimgrep /@Tom/ %
:vimgrepadd /@Susan/ %
:vimgrepadd ...

これにより、クイックフィックスリストのカテゴリ別にグループ化されたすべてのオカレンスが取得されます。クイックフィックスリストは、を介して開くことができます:copen。さて、まだ欠けているのは、カテゴリーの分離です。区切り行を挿入するために使用できますがsetqflist()、おそらくそれぞれの後にクイックフィックス要素の数を格納し、これらの行番号を使用して各カテゴリを折りたたむ:vimgrepカスタムを作成します。'foldexpr'少し実装作業が必要ですが、テキスト編集の通常の領域以外の何かを求めてきました。

于 2012-09-28T11:17:26.913 に答える
0

Vim でこれを行うことは可能ですが、分離のために、これらのようなタスクは別のプログラミング言語で行う方がよいと思います。Vim スクリプトは、エディター機能の一部を強化するためにのみ使用されることを意図しています。たとえば、Vim に組み込みコマンドがないのはそのためですsort(更新: Vim 7 では実際に組み込まれています): このコマンドは、他のエディター/コマンドと組み合わせても役立つタスクを実行するためです。

このテキスト処理を行う一連の Python/Perl スクリプト (Vim スクリプトよりも間違いなく優れたテキスト処理言語) を作成すると、それらを Vim と簡単に組み合わせることができます。次に例を示します。

:%!python myscript.py

現在のバッファの内容全体を に送信しmyscript.py、バッファを結果で置き換えます。もご覧ください:help read!

于 2012-09-28T09:30:46.007 に答える