3

Emacs で、事前に指定した連続していないディレクトリの固定セットで、ファイル名内 (ファイル内ではなく) の文字列を検索できるモードまたは機能はありますか?

プロジェクト内でファイル名を検索できると思いprojectile-modeますが、プロジェクトはファイルを含むディレクトリとして定義されていると思います。いくつかの異なるディレクトリを検索する必要があります。

4

2 に答える 2

2

ライブラリのつららがこれに役立ちます。

  1. つららモードでは、ファイル検索 (訪問) コマンドを含むすべてのコマンドで、複数の入力パターンを同時に処理できます。たとえば、/a/b/c名前が Unix/Linux glob pattern に一致する directory 内のすべてのファイルと、名前が glob pattern に一致foo*.elする dir 内のすべてのファイルにアクセスするには、次のようにします。/x/ybar*toto*.c

     C-x C-f /a/b/c/foo*.el /x/y/bar*toto*.c M-R
    

    これM-Rが、ミニバッファー入力が複数のファイル名パターンとして解析される原因です。(ファイル名とスペースを一致させるパターンが必要な場合は、パターンを で囲みます"..."。)

    この単純な複数入力機能について説明しているこのページを参照してください。

  2. ファイル名のセットを作成して、後で再利用することができます。これには永続的なものも含まれます (つまり、別の Emacs セッションで再利用します)。 このページでは、この機能について説明します。

    これを行うには、C-x C-f必要なファイルの一部 (たとえば、特定のディレクトリ内) に一致するファイル名パターンを入力した後、TABまたはを押しS-TABてパターンを完成させ (そしてポップアップ ウィンドウに一致を表示します*Completions*)、次にC-M->(またはC-u C-M->永続的に保存します)。

    ここでのパターンはグロブ パターンではありません。それらをシェルに渡しているわけではありません。それらは Emacs Lisp 正規表現、または部分文字列パターン、またはプレフィックス パターン、またはあいまい一致パターンです... 一般に、正規表現はここでの友達です。

    C-M-> マークを使用するか、一致するファイル名のリストを保存します。Lisp 変数またはファイルに保存することも、変数を使用せずにメモリに保存することもできます。

    ここで、ミニバッファーの入力 (まだ同じC-x C-fコマンド呼び出しにいます) を別のディレクトリとファイル名のパターンに変更C->し、最初のパターンを使用して作成した保存済みセットに新しい一致を追加するためにヒットします。必要な数のディレクトリとファイル パターンに対して繰り返します。C-g今すぐファイルにアクセスしない場合はで終了し、アクセスする場合は で終了しRETます。

    保存した一連のファイル名再利用 するには、 を使用してから を押します。(永続的に保存されたセットを取得するには、最初に:を使用します。) これにより、現在のファイル名の一致セットが、保存された名前のセット内のものになるように定義されます。それらのすべてを訪問するためにヒット。または、セットに追加または削除して、わずかに異なるセットを開くことができます。C-x C-fC-M-<C-uC-u C-M-<RET

    補完中に、候補のセットを結合することもできます: 補完、結合、共通部分、差集合。このような操作にバインドされたクイック キーがあります。

    Lisp を使用して、後で再利用するためにセットを定義することもできます。これをインタラクティブに行う簡単な方法は、M-x icicle-candidate-set-defineファイル名の補完中に を使用することです。ファイル名文字列のリストに評価される Lisp sexp を求めるプロンプトが表示されます。

  3. さらに別の方法: Dired バッファで、必要なファイルをマークしてから、 を使用C-M->して、上記の #2 のように再利用できるセットとしてそれらを保存します。別の Dired ディレクトリに移動し、そこでファイルをマークしてから、 を使用C->して、最初の Dired バッファから定義したセットにそれらを追加します。等々。

    Dired バッファからマークされたすべてのファイルと、マークされたサブディレクトリ内のマークされたファイル (またはマークされたサブディレクトリ内のすべてのファイル) をM-+ C-M->(および同様に forを使用して) 収集することもできますM-+ C->

上記で提案したように、一連のファイル名をファイルに保存する以外に、Emacs ブックマークを使用できます。ライブラリBookmark+を使用すると、Dired ブックマークを使用してファイルとディレクトリのセットを簡単にブックマークできます (マークは記憶されます)。また、任意の数の自由形式のタグを使用して、ファイルとディレクトリに (ブックマークとして)タグを付けることができます。各タグは、事実上、一連のブックマークを定義します。これらの機能の詳細については、 Bookmark+のドキュメントを 参照してください。

Bookmark+とは別のライブラリですが(どちらも他を必要としません)、Iciclesは、特定のタグ セットでタグ付けされたファイルやディレクトリに簡単にアクセスするなど、 Bookmark+の機能を利用する多くの方法を提供します。

始めるにはこれで十分です。

于 2014-04-21T02:39:22.990 に答える
2

helmを使用することにオープンな場合は、特にこの目的のためにhelm-cmd-tを作成しました。使用方法が十分に明確でない場合は、github で問題を開いてください。

于 2014-04-21T13:30:14.500 に答える