Helix - A post-modern Texteditor
Dieser Texteditor ist definitiv mein:
Programm des Jahres 2024!
Einleitung
Eines meiner wichtigsten Werkzeuge am Rechner ist definitiv der Texteditor. Und hier gibt es wahrlich eine extrem große Auswahl, egal ob grafisch oder Text-basiert. Bei letzteren sind die meistgenutzten vmtl.: nano, vim, micro und mcedit
Gerade mcedit (Der Editor vom Midnight-Commander) war über Jahrzehnte mein persönlicher Favorit!
Modus-basierte Editoren wie Vim waren mir hingegen immer sehr suspekt. Ich wusste zumindest, dass ich mit ":q" ganz schnell wieder aus Vim raus komme.
Nun, Helix hat da einiges positiv verändert.
Generelle Bedienkonzepte
Es gibt mehr oder weniger 3 davon:
- Maus + Tastatur (am weitesten verbreitet)
- Nur Tastatur, Navigation mit den Cursor-Tasten, Pos1, Ende, ...
- Nur Tastatur, Navigation mit h,j,k,l, ...
Die Steuerung mit der Maus ist heutzutage am weitesten verbreitet ... sehr einfach und intuitiv. Eine Navigation mittels Cursor-Tasten ist auch noch sehr logisch. Hingegen werden für die Steuerung mittels "hjkl" mehrere Modi benötigt, was etwas Einarbeitungszeit erfordert. Der Vorteil ist hier allerdings, dass die Hände permanent auf der Tastatur (Home-Row) verbleiben können. Alle Aktionen können von hier aus erfolgen. Egal ob Texteingabe, Selektion, Copy-Paste, Navigation oder Kommandos wie Öffnen, Schließen und Beenden. Dies führt, nach einer Einarbeitungszeit, zu einer deutlich schnelleren Schreibgeschwindigkeit. Die Hände wandern weniger hin und her und auch die Augen können viel mehr auf dem Bildschirm beim zu bearbeitenden Text bleiben. Man ist somit viel fokussierter und schneller.
Was ist Helix?
Helix ist ein in Rust geschriebener Terminal-basierter Text-Editor, der sich als nächste Generation hinter Programmen wie Vim, NeoVim und Kakoune einreiht.
Besonders machen Helix vor allem 3 Punkte:
- "Selection before action"-Konzept
- "Out of the box" ist alles wichtige bereits integriert, inklusive LSP-Unterstützung!!!
- Komplett frei konfigurierbar
Selection before action?
Dies ist ein Konzept, welches bereits bei Kakoune eingeführt wurde.
Zum Vergleich, in Vim wird eine Aktion sofort und direkt ausgeführt, weshalb z.B. mit "dd" eine Zeile sofort gelöscht wird.
In Helix wird die Zeile zuerst markiert und erst danach gelöscht. Dies gibt ein klares Feedback, mit welchem Textbereich man gerade arbeitet. Eine Zeile wird hier mit "x" markiert und erst dann mit "d" gelöscht. Dies ist sehr ähnlich zum Verhalten, wenn man den Textbereich mit der Maus auswählt.
Der Cursor im "normal-mode" kann hier übrigens bereits als "Auswahl" für ein einzelnes Zeichen betrachtet werden.
Caps-Lock
In Helix arbeitet man (neben den "Minor Modes") in 3 Modi:
- Normal (Navigation) (jederzeit mit ESC erreichbar)
- Insert (Texteingabe) (z.B. mit i,I,a,A,c,r)
- Visual (Selektion) (mit "v")
Zum Wechseln in den Normalmode wird "Escape" sehr häufig verwendet. Eine Taste, die hierzu allerdings sehr ungünstig liegt. Es gibt somit einige Workarounds, am besten hat sich für mich hier das Tool "caps2esc" bewährt. Damit wird die meist ziemlich unnütze "Caps Lock"-Taste, die eigentlich ideal auf der Homerow beim kleinen Finger liegt, in Escape und Control umgewandelt. Mit "caps2esc" wird so eine der am wenigsten gebrauchten, aber bestens gelegenen, Tasten zu einer der wichtigsten Tasten überhaupt!
Installation
https://gitlab.com/interception/linux/plugins/caps2esc
apt install interception-caps2esc
editor /etc/interception/udevmon.d/udevmon.yaml
Hier müssen folgende Zeilen eingefügt werden:
- JOB: "interception -g $DEVNODE | caps2esc | uinput -d $DEVNODE"
DEVICE:
EVENTS:
EV_KEY: [KEY_CAPSLOCK, KEY_ESC]
Per Standard wird die Escape-Taste mit der Caps-Lock-Taste getauscht. Da meine Finger jedoch gerne automatisch zu ESC hoch wandern (Gewohnheit), nutze ich "Modus 1", was somit nur die Caps-Lock-Taste modifiziert und ESC unverändert lässt. Dazu einfach die JOB-Zeile oben wie folgt ändern:
- JOB: "interception -g $DEVNODE | caps2esc -m 1 | uinput -d $DEVNODE"
Danach den Service neu starten:
systemctl restart udevmon
Muskelgedächtnis
Hier sind wir auch schon bei einem weiteren sehr wichtigen Punkt. Durch jahrelanges Arbeiten am PC hat man sich ein sogenanntes Muskelgedächtnis an-trainiert. Heißt, die Finger wissen intuitiv, wo welche Taste (Funktion) liegt. Und dies kann man nicht mal schnell ändern. Ernsthaft!!!
Gerade deshalb ist die großartige Konfigurierbarkeit von Helix so wichtig. Helix deckt übrigens alle Bedienkonzepte ab, auch Mausbedienung und Cursor-Tasten, was allerdings offiziell nicht empfohlen wird. Klar, am schnellsten ist definitiv die Navigation mittels Tasten wie "wbeg" und "hjkl".
Installation
Von nachfolgender Seite das aktuelle Linux-Image herunter laden, oder ggf. auch einfach das AppImage zum Testen verwenden.
https://github.com/helix-editor/helix/releases
Das AppImage muss nur ausführbar gemacht werden – fertig.
Das Linux-Image kann man hingegen z.B. nach /opt entpacken und dazu von /usr/local/bin einen symbolischen Link zur enthaltenen "hx"-Datei anlegen. So kann Helix jederzeit mit "hx" aufgerufen werden.
Debian-Repo
Helix ist leider noch nicht in das Debian-Repo aufgenommen. Aber ich gehe sehr davon aus, dass sich dies relativ schnell ändern wird.
Helix 25.01
Leider wurde die neue Helix-Version für GLIBC 2.39 gebaut, in Debian Stable ist aber nur 2.36 verfügbar!
Am einfachsten ist es deshalb, den Helix-Fork von "zydou" zu verwenden:
https://github.com/zydou/helix
Dort das Image herunterladen und ggf. noch die Rechte mit "chmod -R a+rX" anpassen.
Einstellungen
Helix hat eine sehr gute und wirklich durchdachte Standard-Konfiguration, mit der auch genau so gearbeitet werden kann.
Ein paar Einstellungen machen allerdings doch Sinn, diese werden hauptsächlich in folgender Datei vorgenommen:
~/.config/helix/config.toml
Hier ein paar Einstellungen, die ich generell empfehlen kann und gerne so übernommen werden können:
[editor]
true-color = true
color-modes = true
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.file-picker]
hidden = false
[editor.smart-tab]
enable = false
[editor.statusline]
mode.normal = "NORMAL"
mode.insert = "INSERT"
mode.select = "SELECT"
[editor.soft-wrap]
enable = false
Key-Mapping
Was die Tastenbelegung betrifft, habe ich einige Änderungen vorgenommen. Die Tastenbelegung ist nämlich auf die US-Tastatur ausgelegt, was beim deutschen Layout .... nur bedingt ideal ist. :?
Gerade die "Homerow" sollte mit den wichtigsten Funktionen versehen werden, da diese Tasten nun mal am schnellsten erreicht werden können.
Z.B. liegen 'ö' und 'ä' zwar perfekt auf der "Homerow", sind aber nicht belegt. Hingegen sind '[' und ']' nur wesentlich unhandlicher mit "Alt Gr" erreichbar.
Zudem wird ja durch "caps2esc" die Caps-Lock-Taste zu einer weiteren "Strg"-Taste, was Kombinationen mit "Control" um ein vielfaches interessanter machen.
Nun, man hat quasi alle Möglichkeiten und kann alles sehr einfach nach eigenem Gusto belegen.
Als Inspiration kann gerne ein Blick in meine derzeitige Konfiguration geworfen werden:
https://gitlab.com/MN77/helix-config
Die Helix-Dokumentation ist auch gut aufgebaut, dort kann alles nachgelesen werden:
https://docs.helix-editor.com/
Tipp:
Änderungen immer in allen 3 Modi (normal, select, insert) vornehmen! Natürlich entsprechend angepasst.
Themes
Das Standard-Theme fand ich nicht besonders. Empfehlen kann ich "base16_transparent", das ist sehr schlicht gehalten. Man kann aber auch einfach ":theme
Fest schreiben kann man dies auch in der "config.toml" ganz oben mit:
theme = "base16_transparent"
Oder man passt ein bestehendes Theme an, so wie ich es gemacht habe. Das neue Theme dann einfach unter "~/.config/helix/themes" ablegen, schon kann es verwendet werden.
Integrierte Hilfe
Helix ist einerseits sehr schnell, andererseits aber auch sehr einsteigerfreundlich. Man kann mit
Zusätzlich lässt sich mit "
Tutor
Auch für Helix gibt es ein integriertes Tutorial, welches derzeit leider nur in englisch verfügbar ist:
hx --tutor
Post-Modern
Übrigens, bzgl. "post-modern":
Dies ist ein Witz!
Wenn "Neovim" das moderne "Vim" ist, dann ist "Helix" eben "post-modern".
Schlusswort
Ach ja, beenden kann man Helix auch mit ":q".
Bei mir reicht dazu (weil sehr häufig verwendet) ein einfaches Drücken der Taste "q", bzw. "Q" zum speichern und beenden.
Viel Spaß beim Ausprobieren!
P.S.: Dieser Post wurde auch mit Helix erstellt.
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt