Der Helix Editor¶
Vor kurzem habe ich den “Helix” Editor [1] entdeckt. Es ist ein Vim-ähnlicher,
nicht-grafischer Editor der in Rust geschrieben ist. Man lädt einfach die
ausführbare Datei herunter und schon ist der Editor startklar. Das Programm
heisst hx
. Alles was den Anfänger bei Vim erst mal vor grössere Rätsel
stellt wie die .vimrc
und die vielen Erweiterungsmöglichkeiten sind bei
Helix nicht notwendig. Es gibt durchaus Anpassungsmöglichkeiten bei Helix,
aber diese kann man übersichtlich und verständlich in den beiden TOML Dateien
config.toml
und languages.toml
im Verzeichnis ~/.config/helix
erledigen (siehe [2]).
Zum Installieren von Helix holt man sich am besten die aktuelle vorkompilierte
Version von https://github.com/helix-editor/helix/releases und speichert
sie z.B. in ~/.local/bin/
.
Ein sehr starkes Argument für die Verwendung von Helix als Programmiereditor ist seine eingebaute Unterstützung für das “Language Server Protocol” (LSP) [3]. Mit dem Kommando
$ hx --health
wird eine lange Liste aller unterstützten Sprachen ausgegeben, so dass man gleich sieht, wie der jeweilige Language Server heisst, ob er installiert ist und welche Features unterstützt werden.
Im folgenden gebe ich kurz an, was ich zum Editieren von Code in Rust, C und Python tun musste.
Rust
Der Language Server für Rust heisst rust-analyzer
. Am besten holt man
sich die aktuelle vorkompilierte Version von Github Releases und führt sie
aus ~/.local/bin/
aus. Falls das Programm auch in ~/.cargo/bin
ist, dann sollte man es dort entfernen oder dafür sorgen, dass die aktuelle
Version früher im Suchpfad (PATH) steht.
Das ist schon alles was zu tun ist. Damit der Language Server “anspringt”, muss
man den Quelltext in einem Rust Crate editieren, es muss also ein Verzeichnis
mit Cargo.toml
und src/
vorhanden sein.
Sourcecode: https://github.com/rust-lang/rust-analyzer
Releases: https://github.com/rust-lang/rust-analyzer/releases
C
Der C/C++ Language Server heisst ccls
. Es gibt ein Linux Paket, das man einfach
mit sudo apt install ccls
installieren kann. Verwenden kann man ihn sowohl
für die Erstellung von nativen Programmen, als auch für die Programmierung von
Embedded Systems, die z.B. die arm-none-eabi-gcc
Toolchain verwenden.
Folgende Schritte sind nötig:
Es ist ein kleiner Abschnitt in der
languages.toml
notwendig:[[language]] # from https://github.com/helix-editor/helix/issues/5526 name = "c" auto-format = false language-server = { command = "ccls", args = [] }
In dem C/C++ Projekt muss es eine “Compilation Database” geben. Diese legt man an mit Programmen wie z.B.
compiledb
oderbear
. Ich habe mich fürcompiledb
entschieden. Da es ein Python Programm ist erfolgt die Installation mitpip install compiledb
. Falls das C/C++ Projekt mit einem Makefile zum Bauen ausgestattet ist, dann ist die Anwendung sehr einfach. Man ruft$ compiledb make
auf, danach ist die “Datenbank” in der Dateicompile_commands.json
.Nun öffnet man Helix in dem Verzeichnis in dem auch
compile_commands.json
liegt und kann danach komfortabel editieren.
Sourcecode: https://github.com/MaskRay/ccls
compiledb: https://pypi.org/project/compiledb
Compilation Database: https://clang.llvm.org/docs/JSONCompilationDatabase.html
Python
Der Sprachserver für Python heisst pylsp
, man installiert ihn mit
pip install -U python-lsp-server
Vermutlich bräuchte man gar keinen Zusatz in languages.toml
, ich habe
aus irgend einem Grund folgenden Abschnitt aufgenommen:
[[language]]
name = "python"
diagnostic-severity = "Warning"
auto-format = true
language-server = { command = "pylsp", args = [] }
Am besten man probiert es zunächst mal ohne diesen Abschnitt.
—
Ein praktisches Tastenkürzel ist in Helix bei allen Sprachen gd
(goto
definition). Zurück springt man wieder mit Strg-o
.
Alle Tastenkürzel sind hier erklärt: https://docs.helix-editor.com/keymap.html