Diese Seite listet einige Programme auf, die das Arbeiten auf der Kommandozeile einfacher oder angenehmer macht. Es handelt sich dabei ausschließlich um solche, die ich selbst verwende oder verwendet habe, und die ich weiter empfehlen würde.
Wichtig ist zu erwähnen, dass nur Programme aufgelistet werden, die für ihren Zweck nicht dringend notwendig sind. So kommt z.B. `cargo` nicht vor, weil es für die Verwendung von Rust praktisch zwingend notwendig ist. Das selbe Prinzip gilt auch für `git`, aber nicht für `gitui`, da dieses für das Arbeiten mit Git nicht nötig ist.
Programme, die ich derzeit noch verwende sind mit ⚙️ gekennzeichnet.
Diese Liste ist inspiriert von den ähnlich betitelten Vortägen von [Martin Leyrer](https://martin.leyrer.priv.at/), beispielsweise jenem auf der [Easterhegg 2018](https://www.youtube.com/watch?v=ApDkyByUHXw).
## Shell samt Plugins
- **[fish](https://fishshell.com) - friendly interactive shelll** ⚙️ <br>
Als Shell, also die eigentliche Kommandozeile verwende ich `fish`. Im vergleich zu `bash` und `zsh` ist sie viel angenehmer in der Benutzung beim Eingeben von Befehlen, und hilft mit guten Vorschlägen fleißig mit. Beim Schreiben vom Skripten hat sie einen Syntax, den man viel leichter lernen und lesen kann. Außerdem macht das Konfigurationssystem für mich viel mehr Sinn.
- **[Fisher](https://github.com/jorgebucaran/fisher) - Plugin Manager** ⚙️ <br>
Ein einfach zu bedienender Plugin-Manager für die fish-Shell.
- **[fish-autoupdate-plugin](https://github.com/TeFiLeDo/fish-autoupdate-plugin) - Automatische Plugin-Updates** ⚙️ <br>
Ein Plugin, dass beim Starten von fish den Plugin-Manager beauftragt, alle Plugins zu aktualisieren. Außerdem kann es die Liste von zu verwendenden Plugins zuvor herunterladen und austauschen.
Von mir selbst geschrieben.
- **[fish-exa](https://github.com/wawa19933/fish-exa) - Kurzbefehle für [[#^eza|eza]]** ⚙️ <br>
Nützliche Kurzbefehle für `eza`, welches auch auf dieser Liste steht. ^fish-exa
## Datei-Management
- **[eza](https://github.com/eza-community/eza) - Besseres `ls`** ⚙️ <br>
`eza` ersetzt im Grunde genommen einfach `ls`, ist aber übersichtlicher und hat einige zusätzliche Funktionen.
Ursprünglich startete das Program als [exa](https://github.com/ogham/exa), welches aber schon seit Jahren nicht mehr entwickelt wird, und mittlerweile selbst auf `eza` verweist. Bislang liefert (in meiner Erfahrung) `eza` aber auch immer einen Symlink für `exa` mit, sodass beide Befehle funktionieren. Daher geht z.B. auch das [[#^fish-exa|fish-exa]]-Plugin noch. ^eza
- **[bat](https://github.com/sharkdp/bat) - Besseres `cat`** ⚙️ <br>
`bat` ist für `cat` das, was [[#^eza|eza]] für `ls` ist. Die bedeutenste Funktion ist die integrierte Syntax-Hervorhebung. Aber es enthält auch einige andere Optionen, die es angenehmer zu verwenden machen.
- **[zoxide](https://github.com/ajeetdsouza/zoxide) - Lernendes `cd`** ⚙️ <br>
Zoxide, bzw. `z`, führt im Hintergrund Buch darüber, wie oft man in welches Verzeichnis navigiert. Wenn man es dann verwendet, findet es für den angegebenen Text das passenste Verzeichnis und öffnet dieses. Beispielsweise wird aus `cd Code/watterblock` (in `fish` kann man sich das `cd` sparen) dann einfach `z wa`. Das funktioniert natürlich auch für längerer Pfade und Texte.
## Weitere
- **[Helix](https://helix-editor.com/) - Text-Editor** ⚙️ <br>
Helix ist ein `vim`-ähnlicher Texteditor. Verglichen mit `vim` und `nvim` bringt er aber wesentlich mehr Funktionen von Haus aus mit, z.B. eine Syntax-Hervorhebung und Unterstützung für [LSP](https://de.wikipedia.org/wiki/Language_Server_Protocol).
- **[ripgrep](https://github.com/BurntSushi/ripgrep) - modernes `grep`** ⚙️ <br>
Eine `grep`-Alternative, die ich etwas angenehmer zu verwenden finde. ^ripgrep
- **[igrep](https://github.com/konradsz/igrep) - Interaktive `grep`** ⚙️ <br>
Eine einfach zu verwendende [TUI][TUI] für [[#^ripgrep|ripgrep]], welche das Durchsuchen vieler Treffer angenehmer macht.
Ich hab uach ein [bisschen was](https://github.com/konradsz/igrep/issues?q=author%3ATeFiLeDo%20is%3Amerged) dazu beigetragen.
- **[gitui](https://github.com/gitui-org/gitui) - [TUI][TUI] für [git](https://git-scm.org)** ⚙️ <br>
Insbesondere angenehm beim betrachten des Logs, und für Blame.
[TUI]: https://de.wikipedia.org/wiki/Zeichenorientierte_Benutzerschnittstelle