Journaled vim
TextFlorian hat bereits in seinem Blog einen sehr lesenswerten und ausführlichen Artikel zum Thema Notizen mit Vim + Extras
geschrieben. Wer bereits wie wir schon alles mal durchprobiert hat und immer noch nicht zufrieden ist, sollte zuerst Florians Artikel lesen, es lohnt sich. Ich bin seit einigen Wochen ebenfalls auf vimwiki umgestiegen, da alle anderen Alternativen für mich nicht funktioniert hatten und simple Markdown Files ohne Links auf Dauer zu umständlich sind.
Da ich ständig irgend etwas aufschreiben/nachschlagen will/muss, und auf der Arbeit vimwiki auch als persönliche ToDo-Liste nutze, musste diese Lösung einfach und immer zur Hand sein. Deshalb habe ich ein Terminal mit geöffnetem Vim stets als Scratchpad Fenster offen (ich verwende i3 als Window Manager) und kann es bequem mit [WIN]+- ein- und ausblenden.
Diesen Prozess habe ich automatisiert. Ein kleines Script ~/bin/n prüft, ob bereits das Scratchpad offen ist und wenn ja, wird es in den Vordergrund gelegt. Wenn noch kein Scratchpad Fenster offen ist, wird ein neues Terminal geöffnet, Vim mit vimwiki und dem aktuellen Tag gestartet und auf das Scratchpad gelegt.
#!/usr/bin/env sh
set -e
# Scratchpad already open?
if [[ `which i3-ipc` && `i3-ipc -p -t 4 | grep scratchpad | grep -v none` ]]; then
i3-msg scratchpad show 1> /dev/null
exit 0
fi
# Open a new scratchpad an start the vimwiki diary
i3-sensible-terminal -e vim -c VimwikiMakeDiaryNote &
while true; do
[[ `xdotool search --onlyvisible --pid $! 2> /dev/null` ]] && break
sleep 1
done
i3-msg floating enable 1> /dev/null
i3-msg move scratchpad 1> /dev/null
Natürlich lässt sich dieses Script auch in die ~/.i3/config legen und beim Start gleich mit ausführen:
exec ~/bin/n
Somit ist das private Wiki immer griffbereit. Was mir regelmäßig passierte, war, dass ich das Scratchpad total vergaß (da im Hintergrund) und mein PC ausschaltete. So gingen ungespeicherte Änderungen verloren. Damit mir das nicht mehr passiert, habe ich folgende Zeilen in meinem ~/bin/off Script ergänzt:
if [[ `which i3-ipc` && `i3-ipc -p -t 4 | grep scratchpad | grep -v none` ]]; then
i3-nagbar -t warning
-m "A Scratchpad is open, please close first."
-b "open pad" "i3 scratchpad show"
1>2 /dev/null
fi
sudo shutdown -h now
Sollte das Scratchpad noch offen sein, wird ein kleiner Hinweisdialog (gelbe Leiste am oberen Bildschirmrand) angezeigt, das mich davor warnt. Wirklich sehr praktisch :)
Da ich mein Wiki nicht nur an einem PC nutze, habe ich alles in einem Git-Repository und ein kleines Vim-Mapping, mit dem ich die Stände abgleichen kann. Damit komme ich eigentlich sehr gut zurecht.
nnoremap <<leader>>wf :!cd ~/.fuNotes; git pull; git aa; git commit -m "changes"; git push<<cr>>