Notational Velocity's Simplicity
Notational Velocity was a great tool I started using back in the days of yore, when I was on iBook running Mac OS X 10.4. Its simplicity, latter iterated on by nvALT, was a superb. At its core you have three parts: A search box, a notes list, and a view of the selected note. By typing in the search box you limit the listed notes to ones whose title/contents matched. When you selected a note you started editing it, and if there was no match you started editing a new note. Everything after that feature set is extras.
Due to how simple this setup is, it is also trivial to use :w your file syncing method of choice (syncthing for me) to have your notes in other places.
Linux
There have been a number of kludgey, mostly GUI alternatives to Notational Velocity. Sadly many of the alternatives I tried attempt to do extras in an annoying way (forcing .md), didn't work well (glitchy), etc.
NVpy was one of the contenders, and at the time -- a few years ago now -- it just didn't function well.
QOwnNotes is one I came across recently and seems like it would be decent if you were just starting out moving to this note system. That being said, it does kind of do a lot at once. Also, it does have some hiccups like requiring a restart after changing settings...
Previous Solution
Until recently I had been using tv3
-- a resuscitation of Terminal Velocity -- to fill my note taking need.
tv3
was a fork of the project to update for python3, but the original tv3 fork recently was deleted from github.
Prior to tv3
, there had already been one repostitory trade off for a new maintainer of Terminal Velocity.
Anyway, Terminal Velocity had a nice little ncurses UI that gave you the search box and list, and would drop you into your $EDITOR
when you selected your note.
Finding a New Option
In my most recent look into alternatives, I did find what will surely be even better than my final solution later on -- notational-fzf-vim. Unfortunately notational-fzf-vim has more dependencies than I want my vimrc to require... Currently my vimrc can be dropped on a new workstation and automatically vundle install my plugins, and this would break that. Down the road I might consider writing a per machine test for my vimrc, but not for now.
A New Stopgap Solution
While what I came up with is lacking a few things, such as searching the contents of a file at the same time it is doing file name searches, it seems pretty decent for a few lines of code. Here is the excerpt containing my shell function:
### Note ### {{{
## An aproximation of Notational Velocity and Terminal Velocity
## gensub currently replacing
function note() {
pushd ~/Notes 1>/dev/null && \
vim $(fzf -i --cycle --reverse --preview-window=down --preview='cat {}' --print-query | gawk 'END{if($0 !~ /.txt$/){$0=gensub(" ","_","g",$0) ".txt"}; print $0}')
popd 1>/dev/null
}
### End Note ### }}}
Function Explained
Starting from the edges and working in:
pushd
/popd
- ensures we iterate over the notes directory or exitvim
- which opens/makes the file returnedfzf
- to give us a nice Notational Velocity like UI and limit searchawk
- using magic to return either the file, or the new file name with spaces replaced.
Conclusion
While there are some things missing, this certainly seems like a minimum viable replacement for my needs. One which should have a low chance of no longer working in a few years too.
Links
Notational Velocity
nvALT
syncthing
NVpy
QOwnNotes
Terminal Velocity
notational-fzf-vim
vundle
fzf