Ich habe bereits in früheren Artikeln beschrieben, wie ich mich stückweise von diversen Plugins für (Neo)Vim entwöhnt habe. Dieses Mal habe ich nicht etwa ein Plugin ersetzt, sondern mir in einem der benutzten Plugins fehlende Funktionalität erkämpft...
Beim Schreiben des letzten Artikels für diese meine Heimatseite im Zwischennetz habe ich festgestellt, dass es so nicht mehr weitergeht: Es nahm immer Mehr Zeit in Anspruch, die zuletzt geschriebenen Artikel zu finden, um sie zu verlinken. Ich benutze zwar NvimTree als Erleichterung zur Arbeit mit Dateien - genauso wie startify, aber beides half mir nicht weiter bei meinem Problem: NvimTree bietet keine einfache Möglichkeit der Sortierung (aber jede Menge wirklich nützlicher Filter), und auf der Suche nach der Möglichkeit, Filter zu ergänzen (man muss Lua programmieren können) kam mir der Gedanke, dass es mir ja auch nicht ausreicht, die Dateien innerhalb eines Verzeichnisses nach ihrem Änderungsdatum zu sortieren: Ich bräuchte eine Möglichkeit, rekursiv alle Dateien unterhalb meines aktuellen Arbeitsverzeichnisses nach deren Modifikationsdatim absteigend zu sortieren.
Da kam mir der Gedanke, dass Vim ja bereits eine Möglichkeit bietet, eine Datei zu öffnen, indem man einfach den Cursor auf dem entsprechenden Pfad in einem Buffer positioniert und dann die Tastenkombination qf benutzt.
Also benötigte ich lediglich noch eine Möglichkeit, eine solche Liste der Dateien zu erstellen. Dazu wandte ich mich wieder einmal an Linux und die Bash. ls -lR reichte dazu nicht ganz aus - darin sind nur die jeweiligen Dateinamen enthalten - nicht aber die zugehörigen Pfade, Nach einigem Experimentieren langet ich bei folgendem Statement an:
find articles/ -type f \
-exec ls --time-style="+%Y %b %d %H %m" -lR {} + \
|sort -k6rn -k7rM -k8rn -k9rn -k10rn \
|head -n 30
Dieser Befehl listet zunächst alle Dateien unterhalb des angegebenen Verzeichnisses articles auf und übergibt die Liste zum Sortieren an sort - die Sortierung erfolgt absteigent nach Jahr, Monat, Tag, Stunde und Minute und aus dieser sortierten Liste werden dann alle bis auf die ersten 30 verworfen.
Führt man dieses Kommando in Vim aus und liest die Ergebnisse mittels read in einen Buffer, kann man darin wie gewohnt navigieren und wenn der Cursor auf dem gewünschten Dateinamen steht, diesen mittels gf öffnen. Zunächst muss man allerdings noch eine kleinere Anpassung vornehmen: Die Prozent-Zeichen des Format-Strings müssen escaped werden, damit das gewünschte Resultat erzielt wird:
:enew | read ! find articles/ -type f -exec ls --time-style="+\%Y \%b \%d \%H \%m" -lR {} +|sort -k6rn -k7rM -k8rn -k9rn -k10rn |head -n 30
Dieses Vorgehen funktioniert schon ganz gut, allerdings könnte die User Experience noch verbessert werden: Solche naiv benutzten Scratch-Buffer sorgen dafür, dass Vim sich beim Beenden wegen ungespeicherter Buffer beschwert. Außerdem verschmutzen diese Buffer die Bufferliste. Daher hier die finale Version des Kommandos, die diese Unschönheiten beseitigt:
:noswapfile hide enew | setlocal buftype=nofile bufhidden=hide nobuflisted | read ! find articles/ -type f -exec ls --time-style="+\%Y \%b \%d \%H \%m" -lR {} +|sort -k6rn -k7rM -k8rn -k9rn -k10rn |head -n 30
Man kann natürlich das ganze weiter anpassen: Statt den Buffer mit den Ergebnissen mittels enew in einem neuen Buffer zu öffnen könnte man dazu auch einen Split mittels new oder vnew eröffnen. Das Verzeichnis, von dem aus die Suche gestartet werden soll lässt sich ebenso anpassen wie ganz generell die Angabe, welche Dateien von find berücksichtigt weden sollen (ich habe hier nur Verzeichnisse ausgeschlossen). Schließlich ist es natürlich auch möglich, dass die Dateien gefragt sind, deren Modifikationsdatum am weitesten in der Vergangenheit liegt - oder man will mehr oder weniger der hier eingestellten maximal 30 Ergebnisse sehen. Kurz gesagt - es gibt viele Wege, die hier vorgestellte Idee an eigene Bedürfnisse anzupassen!
Papers Februar 2021
25.02.2021
Auch wenn der Februar noch nicht ganz um ist haben sich bereits wieder - wie schon im Januar - vier Papers angefunden die ich hier kurz vorstellen möchte.
WeiterlesenAndroid Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Hardware. Links Java Java. Komponenten Jupyter JupyterBinder Komponenten Links Linuc Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Präsentationen Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
Asymmetrische KryptographieIch habe mich mit der Idee schon länger getragen: Nochmal einen Rundumschlag zu asymmetrischer Kryptographie zu machen. Dabei werde ich mich auf Demonstrationen der einzelnen Konzepte und Operationen mit Beispielcode konzentrieren und zu jedem der vorgestellten Konzepte mehr oder weniger ausführlich bezüglich der Einsatzszenarien und Vor- und Nachteile Stellung beziehen
WeiterlesenWie bereits angekündigt werde ich in den nächsten Wochen einige Aspekte asymmetrischer Kryptographie beschreiben. Der vorliegende Artikel erläutert nochmals eine Alternative zum klassischen Vertrauensmanagement und demonstriert die Implementierung in Java.
WeiterlesenNach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2025 folgt hier gleich die erste für dieses Jahr:
WeiterlesenManche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen Codeberg-Repositories findet man hier.