もうこのプロジェクトを維持する時間がありません。引き継ぎに興味がある場合は、GitHub の問題で私に連絡してください。
情報を記録するための心のブロックを緩めます。取り戻すのを妨げている慣習の歯石を削り取ります。
--- 表記速度ホームページ
Notational Velocity は、メモの検索と作成が同じ操作で行われるメモ作成アプリです。
クエリを検索し、一致するノートがない場合は、そのクエリをタイトルとして新しいノートを作成します。
次の GIF を参照するか、このアシネマをご覧ください。
" with vim-plug
Plug 'https://github.com/alok/notational-fzf-vim'
CHANGELOG.md
読みます。
Vim は書くのに最適です。しかし、メモを取ることには最適化されていません。メモを取る場合は、小さなメモをたくさん作成し、作業しているディレクトリとは別のディレクトリで大きなメモを頻繁に変更することがよくあります。私は長年にわたって nvALT を使用し、本格的な編集を行う必要があるときは常に nvALT を使用していました。 , ファイルを Vim で開きます。
しかし、nvALT に関していくつか気になる点がありました。
これは大きなテキスト ファイルを対象としていないため、テキスト ファイルを開くとかなりの遅延が発生します。
スプリットが使えない
私はほとんどの作業を Vim で行っているのに、どうして別のウィンドウを開いて、その劣った編集機能で貴重な画面スペースを無駄にしているのでしょうか。ブレットさん、申し訳ありませんが、nvALT は Vim の編集速度に匹敵しません。
また、私は Notational Velocity の哲学のいくつかの部分に同意しません。
vim-pad のようなプラグインも私には役に立ちませんでした。理由は次のとおりです。
README.md
のように、重複したタイトルのメモが別のディレクトリにあるため、最初の行をタイトルとして使用したくありません。 Junegunn がfzf
作成したとき、私はそれらすべてを Vim で実現できることに気づきました。
このプラグインを使用すると、検索するディレクトリのリストを定義できます。 g:nv_main_directory
を設定しない限り、リストの最初のディレクトリがメイン ディレクトリとして使用されます。いくつかの単語を入力した後にcontrol-x
押すと、それらの単語がファイル名として使用され、メイン ディレクトリにファイルが作成されます。次に、そのファイルを垂直方向に分割して開きます。そのファイルがすでに存在する場合でも、上書きされることはありませんので、心配しないでください。このプラグインはいかなる時点でもファイルを変更することはありません。読み取り、開く、作成のみが可能です。
相対リンクを定義できるため、 ./docs
および./notes
を追加すると機能します。これは (Vim が解釈する) 現在の作業ディレクトリに相対的なものであることに注意してください。
高速検索にはrg
が必要です。
fzf
。
fzf
Vim プラグイン。 fzf
に付属する Vim プラグインをインストールします。これは、vim-plug を使用する場合と同様に実行できます。
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Python 3.5 以降 (プレビュー ウィンドウとファイルパス短縮用)。
検索するディレクトリまたはファイルのリスト (すべて文字列である必要があります) を定義する必要があります。この設定の名前はg:nv_search_paths
です。
これらは相対リンクである可能性があることに注意してください。
" example
let g:nv_search_paths = ['~/wiki', '~/writing', '~/code', 'docs.md' , './notes.md']
このプラグインは、検索とファイル作成を統合します。これは、正規表現として解釈される 0 個以上の引数を取ることができる 1 つのコマンド:NV
を定義します。
:NV
と入力するか、マッピングにバインドして、あいまい検索メニューを表示します。検索語を入力すると、あいまい検索が行われます。コマンドに感嘆符 ( :NV!
) を追加すると、全画面で実行されます。
:NV
と入力するとすべての結果が表示され、FZF でフィルタリングできます。 :NV python
と入力すると、最初の検索をpython
という語句を含む行に制限できます。 :NV [0-9] [0-9]
スペースで区切られたすべての数字を検索します。ご存知のとおり、正規表現です。
散文にはあまり役に立たないため、完全にあいまいな方法では検索しません。完全な単語が検索されますが、単語が隣り合っている必要はなく、同じ行上にあるだけです。矢印キーまたはcp
およびcn
使用して検索結果をスクロールし、次のいずれかのキーを押してファイルを開くことができます。
次のオプションはカスタマイズできることに注意してください。
cx
: 検索文字列をファイル名として使用し、垂直分割で開きます。cv
: 縦分割で開くcs
: 水平分割で開きますct
: 新しいタブで開くcy
: 選択したファイル名をヤンクします<Enter>
: 現在のバッファで強調表示された検索結果を開きます選択したファイルの周囲の線がプレビュー ウィンドウに表示されます。
このプラグインはコマンド:NV
のみを定義します。そのマッピングが必要な場合は、自分で定義できます。これはデフォルトでは意図的に行われません。自分にとって最適なマッピングを使用する必要があります。
例えば、
nnoremap <silent> <c-s> :NV<CR>
g:nv_use_short_pathnames = 0
と設定すると、フルパスを表示できます。
alt-p
を押すと、プレビュー ウィンドウの表示を切り替えることができます。これは小さな画面で便利です。デフォルトでプレビューを表示したくない場合は、 g:nv_show_preview = 0
を設定します。
" String. Set to '' (the empty string) if you don't want an extension appended by default.
" Don't forget the dot, unless you don't want one.
let g:nv_default_extension = '.md'
" String. Default is first directory found in `g:nv_search_paths`. Error thrown
"if no directory found and g:nv_main_directory is not specified
"let g:nv_main_directory = g:nv_main_directory or (first directory in g:nv_search_paths)
" Dictionary with string keys and values. Must be in the form 'ctrl-KEY':
" 'command' or 'alt-KEY' : 'command'. See examples below.
let g:nv_keymap = {
'ctrl-s': 'split ',
'ctrl-v': 'vertical split ',
'ctrl-t': 'tabedit ',
})
" String. Must be in the form 'ctrl-KEY' or 'alt-KEY'
let g:nv_create_note_key = 'ctrl-x'
" String. Controls how new note window is created.
let g:nv_create_note_window = 'vertical split'
" Boolean. Show preview. Set by default. Pressing Alt-p in FZF will toggle this for the current search.
let g:nv_show_preview = 1
" Boolean. Respect .*ignore files in or above nv_search_paths. Set by default.
let g:nv_use_ignore_files = 1
" Boolean. Include hidden files and folders in search. Disabled by default.
let g:nv_include_hidden = 0
" Boolean. Wrap text in preview window.
let g:nv_wrap_preview_text = 1
" String. Width of window as a percentage of screen's width.
let g:nv_window_width = '40%'
" String. Determines where the window is. Valid options are: 'right', 'left', 'up', 'down'.
let g:nv_window_direction = 'down'
" String. Command to open the window (e.g. `vertical` `aboveleft` `30new` `call my_function()`).
let g:nv_window_command = 'call my_function()'
" Float. Width of preview window as a percentage of screen's width. 50% by default.
let g:nv_preview_width = 50
" String. Determines where the preview window is. Valid options are: 'right', 'left', 'up', 'down'.
let g:nv_preview_direction = 'right'
" String. Yanks the selected filenames to the default register.
let g:nv_yank_key = 'ctrl-y'
" String. Separator used between yanked filenames.
let g:nv_yank_separator = "n"
" Boolean. If set, will truncate each path element to a single character. If
" you have colons in your pathname, this will fail. Set by default.
let g:nv_use_short_pathnames = 1
"List of Strings. Shell glob patterns. Ignore all filenames that match any of
" the patterns.
let g:nv_ignore_pattern = ['summarize-*', 'misc*']
" List of Strings. Key mappings like above in case you want to define your own
" handler function. Most users won't want to set this to anything.
let g:nv_expect_keys = []
bat
が PATH にある場合は、それが使用されます。 $BAT_THEME
が設定されている場合は、それが使用されます。
このプラグインによる入力の処理方法は気に入らないが、他のすべてをラップする方法が気に入った場合には、独自のハンドラー関数を定義することもできます。これはNV_note_handler
という名前にする必要があります。
~/notes
と~/wiki
を追加すると、メモはキー バインディング 1 つだけ離れたところにあります。./notes
、 ./doc
などの相対リンクをg:nv_search_paths
に追加すると、現在のプロジェクトのドキュメントをいつでも表示/更新し、個人的なメモを最新の状態に保つことができます。 スクロッドの言葉を引用すると、
Notational Velocity に現在マルチデータベースがサポートされていない理由は、メモを別のデータベースに保存すると、1) カテゴリ/フォルダーベースのオーガナイザーがユーザーに強制するのと同じ種類の決定 (例: 「このメモは仕事になりますか?」など) が必要になるためです。 - 特定または家庭固有?")、および 2) 最終的には、使用中のすべてのデータベースに対して各検索を繰り返すことをユーザーに要求することで、瞬時の検索のポイントを無効にします。
デフォルトのディレクトリを提供することで、最初の問題に対する (1 つの) 修正が提供されます。
ディレクトリのセット全体を同時に検索することで、2 番目の処理を処理します。
また、複数のデータベースに関する Notational Velocity の問題も処理します。 UNIX では、同じフォルダー内でファイル名を繰り返すことは許可されませんが、多くの場合、 workout/TODO.md
やcoding/TODO.md
のように、親フォルダーがコンテキストを提供します。
このプラグインは、1 つのメイン メモ ディレクトリを優先して、ユーザーが作成するすべてのメモに対するメモ取りの操作を抽象化しようとします。
いつでも大歓迎です。何かアイデアや問題がある場合はお知らせください。解決できるよう努めます。すべてが実装されるわけではありませんが、このプラグインの理念に合致したり、本当に便利だと思われる場合は、最善を尽くします。
アパッチ2