Ich habe keine Zeit mehr, dieses Projekt aufrechtzuerhalten. Wenn Sie Interesse an einer Übernahme haben, kontaktieren Sie mich bitte in den GitHub-Fragen.
Lösen Sie die mentalen Blockaden beim Aufzeichnen von Informationen. Schaben Sie den Zahnstein der Konventionen ab, der ihre Wiederherstellung behindert.
--- Notational Velocity-Homepage
Notational Velocity ist eine Notizen-App, bei der das Suchen und Erstellen einer Notiz derselbe Vorgang ist.
Sie suchen nach einer Abfrage, und wenn keine Notiz zutrifft, wird eine neue Notiz mit dieser Abfrage als Titel erstellt.
Sehen Sie sich das folgende GIF an oder schauen Sie sich dieses Video an:
" with vim-plug
Plug 'https://github.com/alok/notational-fzf-vim'
Lesen Sie CHANGELOG.md
.
Vim eignet sich hervorragend zum Schreiben. Aber es ist nicht für das Notieren optimiert, bei dem man oft viele kleine Notizen erstellt und häufig größere Notizen in einem anderen Verzeichnis als dem, in dem man arbeitet, ändert. Ich habe nvALT jahrelang verwendet und immer dann, wenn ich ernsthafte Bearbeitungen vornehmen musste , würde ich die Datei in Vim öffnen.
Aber einige Dinge an nvALT haben mich gestört.
Es ist nicht für große Textdateien gedacht und das Öffnen dieser Dateien führt zu erheblichen Verzögerungen.
Ich kann keine Splits verwenden
Ich erledige die meiste Arbeit in Vim. Warum sollte ich also ein weiteres Fenster öffnen, das mit seinen schlechteren Bearbeitungsmöglichkeiten wertvollen Platz auf dem Bildschirm verschwendet? Tut mir leid, Brett, aber nvALT kann nicht mit der Bearbeitungsgeschwindigkeit von Vim mithalten.
Ich bin auch mit einigen Teilen der Philosophie von Notational Velocity nicht einverstanden.
Plugins wie vim-pad haben es bei mir auch nicht getan, weil:
README.md
. Als Junegunn fzf
erstellte, wurde mir klar, dass ich all das in Vim haben könnte.
Mit diesem Plugin können Sie eine Liste von Verzeichnissen definieren, die Sie durchsuchen möchten. Das erste Verzeichnis in der Liste wird als Hauptverzeichnis verwendet, es sei denn, Sie legen g:nv_main_directory
fest. Wenn Sie nach der Eingabe einiger Wörter control-x
drücken, werden diese Wörter als Dateinamen verwendet, um eine Datei im Hauptverzeichnis zu erstellen. Anschließend wird die Datei vertikal geteilt geöffnet. Wenn diese Datei bereits vorhanden ist, machen Sie sich keine Sorgen, sie wird nicht überschrieben. Dieses Plugin verändert Ihre Dateien zu keinem Zeitpunkt. Es kann sie nur lesen, öffnen und erstellen.
Sie können relative Links definieren, sodass das Hinzufügen von ./docs
und ./notes
funktioniert. Beachten Sie, dass es relativ zu Ihrem aktuellen Arbeitsverzeichnis ist (wie Vim es interpretiert).
Für die schnelle Suche wird rg
benötigt.
fzf
.
fzf
Vim-Plugin. Installieren Sie das Vim-Plugin, das mit fzf
geliefert wird. Dies kann auf die gleiche Weise erfolgen, wenn Sie vim-plug verwenden.
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Python 3.5 oder höher, für das Vorschaufenster und die Dateipfadverkürzung.
Sie müssen eine Liste der zu durchsuchenden Verzeichnisse oder Dateien (die alle Zeichenfolgen sein müssen) definieren. Diese Einstellung heißt g:nv_search_paths
.
Denken Sie daran, dass es sich hierbei um relative Links handeln kann.
" example
let g:nv_search_paths = ['~/wiki', '~/writing', '~/code', 'docs.md' , './notes.md']
Dieses Plugin vereint Suche und Dateierstellung. Es definiert einen einzelnen Befehl :NV
, der 0 oder mehr Argumente annehmen kann, die als reguläre Ausdrücke interpretiert werden.
Geben Sie :NV
ein oder binden Sie es an eine Zuordnung, um ein Fuzzy-Suchmenü aufzurufen. Geben Sie Ihre Suchbegriffe ein und es wird eine Fuzzy-Suche durchgeführt. Wenn Sie dem Befehl ein Ausrufezeichen hinzufügen ( :NV!
), wird er im Vollbildmodus ausgeführt.
Sie können :NV
eingeben, um alle Ergebnisse anzuzeigen, und sie dann mit FZF filtern. Sie können :NV python
eingeben, um Ihre anfängliche Suche auf Zeilen zu beschränken, die den Ausdruck python
enthalten. :NV [0-9] [0-9]
findet alle durch ein Leerzeichen getrennten Zahlen. Sie wissen schon, reguläre Ausdrücke.
Die Suche erfolgt nicht vollständig unscharf, da dies für Prosa weniger nützlich ist. Es sucht nach vollständigen Wörtern, diese müssen jedoch nicht nebeneinander, sondern nur in derselben Zeile stehen. Sie können die Pfeiltasten oder cp
und cn
verwenden, um durch die Suchergebnisse zu scrollen, und dann eine dieser Tasten drücken, um eine Datei zu öffnen:
Beachten Sie, dass die folgenden Optionen angepasst werden können.
cx
: Suchzeichenfolge als Dateinamen verwenden und in vertikaler Aufteilung öffnen.cv
: In vertikaler Teilung öffnencs
: In horizontaler Teilung öffnenct
: In neuem Tab öffnency
: Die ausgewählten Dateinamen löschen<Enter>
: Hervorgehobenes Suchergebnis im aktuellen Puffer öffnenDie Linien um die ausgewählte Datei werden in einem Vorschaufenster angezeigt.
Dieses Plugin definiert nur einen Befehl :NV
, und wenn Sie eine Zuordnung dafür wünschen, können Sie diese selbst definieren. Dies geschieht bewusst nicht standardmäßig. Sie sollten die Zuordnung(en) verwenden, die für Sie am besten geeignet sind.
Zum Beispiel,
nnoremap <silent> <c-s> :NV<CR>
Sie können den vollständigen Pfad anzeigen, indem Sie g:nv_use_short_pathnames = 0
festlegen.
Sie können die Anzeige des Vorschaufensters umschalten, indem Sie alt-p
drücken. Dies ist praktisch auf kleineren Bildschirmen. Wenn Sie die Vorschau nicht standardmäßig anzeigen möchten, legen Sie g:nv_show_preview = 0
fest.
" 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 = []
Wenn sich bat
im PATH befindet, wird es verwendet. Es wird $BAT_THEME
verwenden, wenn es festgelegt ist.
Sie können auch Ihre eigene Handler-Funktion definieren, falls Ihnen nicht gefällt, wie dieses Plugin Eingaben verarbeitet, Ihnen aber gefällt, wie es alles andere umschließt. Es muss NV_note_handler
heißen.
~/notes
und ~/wiki
hinzu, sodass Ihre Notizen nur eine Tastenkombination entfernt sind../notes
, ./doc
usw. zu g:nv_search_paths
hinzu, damit Sie die Dokumentation Ihres aktuellen Projekts immer sehen/aktualisieren und persönliche Notizen auf dem neuesten Stand halten können. Um Scrod zu zitieren:
Der Grund für die derzeitige mangelnde Unterstützung mehrerer Datenbanken in Notational Velocity liegt darin, dass das Speichern von Notizen in separaten Datenbanken 1) die gleichen Entscheidungen erfordern würde, die kategorie-/ordnerbasierte Organisatoren ihren Benutzern aufzwingen (z. B. „Wird diese Notiz funktionieren?“) -spezifisch oder heimspezifisch?“) und 2) den Zweck der sofortigen Suche umgehen, indem der Benutzer letztendlich jede Suche für jede verwendete Datenbank wiederholen muss.
Durch die Bereitstellung eines Standardverzeichnisses bieten wir (eine) Lösung für das erste Problem.
Indem wir den gesamten Satz von Verzeichnissen gleichzeitig durchsuchen, erledigen wir das Zweite.
Es behandelt auch das Problem von Notational Velocity mit mehreren Datenbanken. UNIX erlaubt keine wiederholten Dateinamen im selben Ordner, aber oft stellt der übergeordnete Ordner den Kontext bereit, wie in workout/TODO.md
und coding/TODO.md
.
Dieses Plug-in versucht, den Vorgang des Notierens über alle von Ihnen gemachten Notizen zu abstrahieren, wobei einem Hauptverzeichnis für Notizen Vorrang eingeräumt wird.
Ist immer willkommen. Wenn Sie Ideen oder Probleme haben, lassen Sie es mich wissen und ich werde versuchen, sie zu lösen. Nicht alle werden umgesetzt, aber wenn sie zur Philosophie dieses Plugins passen oder wirklich nützlich erscheinen, werde ich mein Bestes geben.
Apache 2