組織モードファイルの検索インターフェース


7

メモを取るためにorg-modeを使用します。現在、「Notes」などのルートディレクトリがあり、その中に「Linux」、「Programming」などのサブディレクトリがいくつかあります。org-modeを使用して作成したメモは、これらのサブディレクトリに保存されます。

これらのメモ(すべてorg-modeファイル)をすばやく検索できるように、利用可能な設定のセットがあるかどうか疑問に思っていました。私はdeftがあることを知っていますが、org-modeファイル用に設計されていません。実際、helm-projectileも試しましたが、満足できるものには程遠いです。

より正確に言うと、私が達成したいのは、タグ、ヘッドライン、または組織モードに関連するその他の機能を使用して、おそらく事前定義された構文を使用して、これらのファイルを検索できることです。そして可能であれば、私は舵のようなものを好むでしょう。そのような拡張機能がない場合、そのような拡張機能を実装する価値はありますか?deft + helm-projectileが良い出発点かもしれないと思いました。

更新: @itsjeydが回答で示唆しているように、ディレクトリローカル変数とorg-agenda-custom-commandsの両方の方法を試しましたが、後者の方が便利だと思いました。これが私の設定です:

(setq org-agenda-custom-commands
  '(("n" . "Search in notes")
    ("nt" "Note tags search" tags ""
     ((org-agenda-files (file-expand-wildcards "path/to/Notes/*/*.org")))) 
    ("ns" "Note full text search" search ""
     ((org-agenda-files (file-expand-wildcards "path/to/Notes/*/*.org"))))))

お試しになりましたか?:M-x org-search-viewドキュメントへのリンクは次のとおり
lawlist

Afaikでは、デフォルトで(setq deft-extension "org")とを使用して組織ファイルを使用するようにDeftを設定できます(setq deft-text-mode 'org-mode)
mutbuerger 2015年

@ mutbuerger現在使用している設定です。しかし、Deft自体には組織関連の検索機能はありません
cutejumper 2015年

回答:


7

Org自体は、.orgファイルに格納された情報をさまざまな方法でフィルタリング/検索する機能を提供します。それは「議題」と呼ばれます。org-modeマニュアルはそれを使用する方法についての豊富な情報を提供して(上記のリンクをチェックしたり、やるC-h i m Org Mode RETことは、ここで、この情報のすべてを繰り返しても意味がありませんので、にEmacsとナビゲート内からの章の「アジェンダは、ビュー」)。マニュアルの紹介文は、それを使って何ができるかを要約しています(強調は私のものです):

組織は、さまざまな基準に基づいてアイテムを選択し、別のバッファーに表示できます。7つの異なるビュータイプが用意されています。

  • カレンダーのような議題で、特定の日付の情報を表示します。
  • 未完了のすべてのアクションアイテムを網羅するTODOリスト
  • タグ、プロパティ、およびそれらに関連付けられたTODO状態に基づいて見出しを表示する一致ビュー
  • すべてのイベントを単一のOrgファイルに時系列で表示するタイムラインビュー
  • テキスト検索ビューを示している指定されたキーワードを含む複数のファイルからすべてのエントリ
  • 現在動かないプロジェクトを示すスタックプロジェクトビュー
  • 特別な検索と異なるビューの組み合わせであるカスタムビュー

ノートを検索するためのアジェンダの使用を開始するために必要な唯一のことは、検索したいファイルを追加することですorg-agenda-files

表示される情報は通常、すべての予定表ファイルから収集されますorg-agenda-files。ファイルは変数にリストされています。ディレクトリがこのリストの一部である場合、.orgこのディレクトリ内の拡張子を持つすべてのファイルがリストの一部になります。

したがって、あなたのケースでは、あなたのinitファイルに次のようなものを追加したいと思うでしょう:

(setq org-agenda-files '("/path/to/Notes/Linux" "/path/to/Notes/Programming"))

多くの例と実用的なアドバイスについては、Worgでの高度な検索に関する記事もご覧になることをお勧めします。

[更新]検索を特定のファイルセットに制限する

コメントで述べたように、OPは検索を特定のファイルセットに制限できるようにしたいと考えています。専門用語では、これはorg-agenda-filesコンテキストに応じて異なる値に設定することを意味します。これは、ディレクトリローカル変数を使用して実現できます

ディレクトリローカル変数を定義する通常の方法.dir-locals.elは、ディレクトリに名前の付いたファイルを置くことです。Emacsがそのディレクトリまたはそのサブディレクトリのいずれかのファイルを訪問するときはいつでも、それは.dir-locals.el、[...]で指定されたディレクトリローカル変数を適用します。

たとえば、

  • に保存されNotes/Linuxているファイルを訪問しているときに、アジェンダを使用してに.org保存されてNotes/Linuxいるファイルのみを検索したい場合。

  • に保存されているファイルにアクセスNotes/Programmingしているときに、アジェンダを使用してに.org保存されてNotes/Programmingいるファイルのみを検索したいとします。

この動作を有効にする方法は次のとおりです。

  1. 追加.dir-locals.elの両方に次の内容のファイルをNotes/LinuxNotes/Programming

    ((nil . ((org-agenda-files . (".")))))

    これorg-agenda-filesにより、現在のディレクトリにあるすべてのファイルを含めるようにのリストが設定されます。

  2. 次のコードをinit-fileに追加します。

    (add-hook 'org-agenda-mode-hook #'hack-dir-local-variables-non-file-buffer)

    このステップは、*Org Agenda*非ファイルバッファー)がのディレクトリローカル設定を尊重するようにするために必要ですorg-agenda-files

次にNotes/LinuxNotes/Programmingに保存されているファイルにアクセスすると、Emacsはに保存されている設定を適用するかどうかを尋ねてきます.dir-locals.el!Emacsに設定を適用し、今後のセッションで安全であるマークするよう指示するためにヒットします(同じディレクトリ内のファイルを再度要求されることはありません)。


多分私は質問で明確に示さなかった...私は議題を使用しましたが、問題は私の議題の私のスケジュールとTODOを示す他の組織ファイルがあり、私のメモが議題を台無しにしたくないことです見る。Emacsをメモ作成アプリケーションとして使用したいので、多分私が欲しいのはEvernoteの検索機能のようなものです。Deftを知っていますか?優れた検索インターフェースを備えていますが、組織に関連していません
cutejumper 2015年

@cutejumper私がフォローしているかわからない。「議題ビューを台無しにする」とはどういう意味ですか?あなたのLinux / Programming / etcの見出しなら。メモにはTODO状態が関連付けられていないため、TODOアイテムを一覧表示したときに議題に表示されません。
itsjeyd 2015年

まあ、この方法はもっと明確かもしれません。私は実際には個別の議題ファイルのセットを用意したいのです。現在のorg-modeのアジェンダに対する私の理解は、特定の「プロジェクト」(発射物のようなもの)の検索インターフェイスが欲しいので、「グローバル」セットに似ているため、検索を実行すると、 「プロジェクト」の関連コンテンツ。議題が実際に提供する機能を見落としていますか?
cutejumper 2015年

ローカルで設定できます org-agenda-filesアジェンダテンプレート内で関心のあるファイル(またはディレクトリ)のみするかC-c a <、アジェンダ検索を現在のファイルのみに制限するために使用できます。
erikstokes 2015年

1
@cutejumperアジェンダバッファーは、そのままではこのユースケースをサポートしていないと思います。ただし、@ BrianZが彼の回答(helm-org-agenda-files-headings)で言及しているコマンドは、まさに(見出しの)望みどおりの動作をします。helm-org-agenda-files-headings特定のファイルセットで実行できるようにするには、ディレクトリローカル変数を設定する必要があることに注意してください。
itsjeyd 2015年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.