-1

メモの取り方を変えたい。

YYYYmmddHHiiss.txtディレクトリに名前を付けたファイルを追加し、次のように開始します。

=Call somebody (title of my note)
@work (context of my note)
!todo (type of the note, I'll use !inbox, !todo, !waiting, !someday and !reference, each one his habit)
#project_name
#call
#Name of the person
#other tags if needed...

Details...

私が欲しいのは:

  • Vim の使用 (プラグインなし、組み込み機能のみ、外部プログラムなし、私の個人的な vimrc の autocmd、マッピング、および関数のみ)
  • すべてのメモを 1 つのディレクトリに保存し、Vim とタグを信頼して必要なものを見つけます。
  • この種の 1 つのコマンドでこのシステムの使用を開始し、:GtdGrepさらに必要な場合はしばらく考えてください。

モデル

:GtdGrep !todo @work
:GtdGrep !inbox
:GtdGrep @waiting @home
:GtdGrep !todo @work #this_project
:GtdGrep #name_of_a_co-worker #this_project

私の必要性を紹介したので、私の問題を説明することができます ^^ :GtdGrep コマンドの背後にある関数を作成したいのですが、収集できないものがたくさんあります... これが私のドラフトです。

let gtd_dir=expand($HOME)."/Desktop/notes"

function! GtdGrep(...)
    execute "silent! vimgrep /\%<10l".join(a:000, "\\_.*")."/j ".gtd_dir."/**"
    execute "copen"
endfunction
command! -nargs=* GtdGrep call GtdGrep(<f-args>)
  1. 最初の空行の前に検索を抑制する方法は? 正規表現を使用して最初の 9 行でタグを探すことができました\%<10lが、それだけです。
  2. ファイル内の位置に関係なくタグを探す方法は? \_.*改行用の正規表現を使用して、複数の行でgrepを実行することに成功しました。
  3. ケーキのアイシングは、クイックフィックス ウィンドウの表示が、メモのタイトル部分 ( の後/^=) にフォーカスすることです。a で可能だと思いますが^=\zs.*\ze、単一の vimgrep では多すぎます!

編集

以前の結果に対して連続してvimgrepを実行することで、「AND」vimgrepの問題を解決します。それは良い解決策ですか?

let gtd_dir=expand($HOME)."/Desktop/notes"

function! GtdGrep(...)
    let dest = g:gtd_dir."/**"
    for arg in a:000
        execute "silent! vimgrep /^".arg."$/j ".dest
        let dest = []
        let results = getqflist()
        if empty(results)
            break
        else
            for res in results
                 call add(dest, bufname(res.bufnr))
            endfor
            let dest = join(dest, ' ')
        endif
    endfor

    " Last vimgrep to focus on titles before displaying results
    let results = getqflist()
    if !empty(results)
        echom dest
        execute "silent! vimgrep /\\%<10l^=.*/j ".dest
        execute "copen"
    else
        echom "No results"
    endif
endfunction
command! -nargs=* GtdGrep call GtdGrep(<f-args>)

最初の空白行の前の行で vimgrep を抑制したいのですが、うまくいきませんでした。何か案が?

4

1 に答える 1