- Ein langjähriger Nutzer von iTerm 2 hat WezTerm erneut ausprobiert, um textbasierte Konfiguration zu nutzen und dotfiles zu teilen, und passt mit der Lua-Konfigurations-API Aussehen, Keybindings, Multiplexing und Workspaces detailliert an
- Die Konfiguration liegt in
wezterm.lua und wird direkt beim Speichern per Hot Reload neu geladen; im Debug-Overlay mit CTRL + SHIFT + L lassen sich Logs und eine Lua-REPL sofort prüfen
- Mit Lua-Konfiguration lassen sich über 1.000 integrierte Farbschemata, Anbindung an den Dark-/Light-Mode des Systems, Fonts, macOS-Fensterdekorationen und eine Statusleiste im Powerline-Stil dynamisch konfigurieren
- Standard-Keybindings können beibehalten oder deaktiviert werden;
Option + Arrow für wortweise Navigation, CMD +, zum Öffnen der Konfiguration sowie Pane-Steuerung auf Basis von Leader Key und Key Tables werden selbst definiert
- Integriertes Multiplexing und Workspaces halten wie tmux-Sessions den Zustand von Fenstern, Panes und Tabs je Projekt vor; mit Lua lassen sich sogar eine Projektauswahl-UI und der Wechsel-Flow bauen
Warum ich von iTerm 2 zu WezTerm gewechselt bin
- Ich habe iTerm 2 fast zehn Jahre lang genutzt, wollte aber ein Terminal, dessen gesamte Konfiguration textbasiert verwaltet und in dotfiles abgelegt werden kann, um sie zwischen Arbeits- und Privatmaschinen zu teilen
- WezTerm punktet mit einer starken API und Lua config; beim zweiten Versuch ließ sich eine schönere und funktionalere Terminal-Konfiguration bauen
- Abgedeckt werden Aussehen, Keybindings, Multiplexing, Wechsel zwischen Workspaces, Statusleiste und dynamische Theme-Konfiguration
- Einige Funktionen werden in diesem Artikel nicht behandelt
- Benutzerdefinierte Regeln zum Hervorheben von Hyperlinks
- Durchsuchbarer scrollback
- quick copy mode
- Bildunterstützung
- Die Beispielkonfiguration ist auf die Nutzung unter macOS zugeschnitten; auf anderen Systemen wurde sie nicht getestet, WezTerm selbst läuft aber in verschiedenen Umgebungen
- Die finale Beispielkonfiguration steht als gist bereit
Installation und Grundstruktur der Lua-Konfiguration
brew install wezterm
- Als Ablauf wird verwendet, die Konfigurationsdatei unter
$XDG_CONFIG_HOME/wezterm/wezterm.lua abzulegen
- Auf den meisten Systemen einschließlich macOS wird das als
~/.config/wezterm/wezterm.lua interpretiert
- Statt alles in einer einzelnen
~/.wezterm.lua zu halten, erleichtert ein Verzeichnis das Aufteilen der Konfiguration auf mehrere Dateien
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
return config
- Da die WezTerm-Konfiguration in Lua geschrieben wird, lassen sich komplexe dynamische Konfigurationen leichter erstellen als mit YAML oder TOML
- Lua ist eine Programmiersprache und daher schwerer zu lernen als YAML/TOML; wer Erfahrung mit dynamischen Sprachen wie Ruby, Python oder JavaScript hat, kann Beispielcode aber gut lesen
- Als Lernmaterial für Lua eignet sich der Getting Started guide
Hot Reload und Debug-Overlay
- WezTerm erkennt Änderungen an der Konfigurationsdatei und führt einen automatischen Reload aus, sodass sich Konfigurationseffekte ohne Neustart des Terminals sofort prüfen lassen
- Speichert man eine fehlerhafte Konfiguration, etwa mit einem falschen Funktionsnamen, erscheint sofort ein Runtime-Error-Popup
wezterm.config_builderZ()
- Logs lassen sich mit
wezterm.log_info() schreiben
wezterm.log_info("hello world! my name is " .. wezterm.hostname())
- Mit
CTRL + SHIFT + L öffnet man das debug overlay und kann Logs sowie eine Lua-REPL ansehen
- Lua-Ausdrücke wie
1 + 1 lassen sich ausführen
- Auch Werte des Moduls
wezterm, etwa wezterm.home_dir, können geprüft werden
- Zusammen verkürzen Hot Reload und Debug-Overlay die Feedback-Schleife beim Ändern und Prüfen der Konfiguration
Aussehen konfigurieren: Farben, System-Theme, Font, Fensterstil
-
Farbschemata und dynamische Konfiguration
- WezTerm bietet über 1.000 integrierte Farbschemata, ausgewählt werden sie über
config.color_scheme
config.color_scheme = 'Tokyo Night'
- Die Liste der Farbschemata findet sich unter WezTerm colorschemes
- Mit dem Event
window-config-reloaded und wezterm.color.get_builtin_schemes() ist auch eine dynamische Konfiguration möglich, die für jedes neue Fenster ein zufälliges Farbschema setzt
- Wenn nach dem Setzen eines fensterspezifischen config override wieder zu einem statischen Farbschema gewechselt wird, greift der Hot Reload möglicherweise nicht sofort
- Durch Ausführen von
window:set_config_overrides({}) im Debug-Terminal oder durch Schließen und erneutes Öffnen des Fensters lässt sich der Override entfernen
-
Anbindung an Dark-/Light-Mode des Systems
- Durch Auslagern der Konfiguration in ein Modul
appearance.lua kann das Farbschema abhängig vom Erscheinungsbild des Betriebssystems gewechselt werden
- In
wezterm.gui.get_appearance() wird nach dem String "Dark" gesucht, um zu bestimmen, ob Dark Mode aktiv ist
- In Umgebungen ohne
wezterm.gui wird standardmäßig Dark Mode angenommen
if appearance.is_dark() then
config.color_scheme = 'Tokyo Night'
else
config.color_scheme = 'Tokyo Night Day'
end
-
Fonts und Fensterdekorationen
- WezTerm enthält standardmäßig JetBrains Mono und Nerd Font Symbols
- Die Beispielkonfiguration verwendet Berkeley Mono in 13 pt
config.font = wezterm.font({ family = 'Berkeley Mono' })
config.font_size = 13
- Das Beispiel für den macOS-Fensterstil enthält einen halbtransparenten Hintergrund, Blur, das Entfernen der Titelleiste und Font-Einstellungen für die Tab-Leiste
config.window_background_opacity = 0.9
config.macos_window_background_blur = 30
config.window_decorations = 'RESIZE'
Statusleiste und WezTerm Event API
- Über einen Callback für das Event
update-status werden rechts in der Statusleiste Segmente in Powerline-Optik hinzugefügt
- Das anfängliche Beispiel nutzt Hintergrund- und Vordergrundfarbe des aktuellen Farbschemas sowie
wezterm.hostname(), um ein Hostname-Segment anzuzeigen
wezterm.on verbindet Callbacks mit Terminal-Events
update-status tritt periodisch auf, wenn ein Status-Update vorbereitet ist
- WezTerm stellt sicher, dass jeweils nur ein Update gleichzeitig läuft, und beendet den Handler, wenn der Code zu lange braucht
- Mit
window:effective_config().resolved_palette lässt sich die aktuelle Palette inklusive Overrides abrufen
wezterm.format wird verwendet, um Strings mit Stilen wie Farbe, Fettschrift und Unterstreichung zu versehen
- Im späteren Beispiel werden weitere Statusleistensegmente ergänzt
- Aktueller Workspace
- Datum und Uhrzeit
- Hostname
- Mit
wezterm.color.parse, color:lighten, color:darken und wezterm.color.gradient werden Gradient-Farben auf Basis des aktuellen Themes berechnet
Keybindings: macOS-Wortnavigation und Konfiguration öffnen
- WezTerm stellt Standard-Keybindings bereit; im Beispiel bleiben sie aktiviert
- Zum Abschalten der Standard-Keybindings kann
config.disable_default_key_bindings = true verwendet werden
- Damit sich unter macOS wie in iTerm 2 und Terminal.app mit
Option + LeftArrow und Option + RightArrow wortweise navigieren lässt, werden ESC + b und ESC + f gesendet
{
key = 'LeftArrow',
mods = 'OPT',
action = wezterm.action.SendString '\x1bb',
}
CMD + , kann so konfiguriert werden, dass die WezTerm-Konfigurationsdatei in einem neuen Tab geöffnet wird
- Das Beispiel verwendet
nvim und wezterm.config_file
- Wenn WezTerm über den macOS Finder gestartet wurde, fehlt im
PATH möglicherweise das Editor-Binary, sodass die Befehlsausführung fehlschlägt
- Wird der Default-Umgebung über
config.set_environment_variables mehr hinzugefügt, wird dieselbe Umgebung auch an spätere spawn-Befehle weitergegeben
config.set_environment_variables = {
PATH = '/opt/homebrew/bin:' .. os.getenv('PATH')
}
Integriertes Multiplexing und Leader Key
- Das integrierte Multiplexing von WezTerm kann als Ersatz für tmux genutzt werden
- Die integrierten Funktionen bieten einen scrollback buffer pro Pane, bessere Maussteuerung, einfachere Auswahlfunktionen und meist höhere Performance
- Mit
CTRL + SHIFT + P öffnet man die command palette und kann Befehle wie „Shell: Split Horizontally“ und „Shell: Split Vertically“ ausführen
- Die Standard-Shortcuts zum Splitten sind zur Vermeidung von Konflikten komplex; mit einem Leader Key lassen sich einfachere Kombinationen bauen
config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 }
- Das Beispiel führt im tmux-Stil nach dem Leader mit
" einen horizontalen Split und mit % einen vertikalen Split aus
{
key = '"',
mods = 'LEADER',
action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' },
}
- Wenn
CTRL + A selbst an das Terminal gesendet werden soll, wird die Kombination LEADER|CTRL so gemappt, dass wieder CTRL + A gesendet wird
Pane-Wechsel, Resize und Key Table
- Pane-Wechsel werden auf die Vim-Richtungstasten
h, j, k, l in Kombination mit dem Leader gemappt
- Mit
ActivatePaneDirection wird die Bewegung nach Down, Up, Left oder Right ausgeführt
- Wiederholte Lua-Tabellen lassen sich mit einer Funktion reduzieren
local function move_pane(key, direction)
return {
key = key,
mods = 'LEADER',
action = wezterm.action.ActivatePaneDirection(direction),
}
end
- Panes können zwar auch per Maus vergrößert oder verkleinert werden, im Beispiel wird für einen tastaturzentrierten Workflow jedoch eine Key Table verwendet
- Eine Key Table ist ein Modus, in den man wechselt, um modusspezifische Keybindings zu verwenden
- Ähnlich wie ein Leader Key, aber so konfigurierbar, dass sie nach einer Aktion nicht sofort deaktiviert wird
- Gut geeignet für Aufgaben wie Resize, bei denen dieselbe Taste wiederholt gedrückt werden muss
- Das Beispiel aktiviert mit
LEADER + r die Key Table resize_panes und passt mit h/j/k/l die Pane-Größe jeweils um 3 Zellen an
- Mit
timeout_milliseconds = 1000 wird konfiguriert, dass der Resize-Modus nach 1 Sekunde verlassen wird
- Neovim-Nutzer können sich smart-splits.nvim ansehen, um die Navigation zwischen WezTerm-Panes und Vim-Panes zu erleichtern
Projektbezogene Workspace-Konfiguration
- Wenn man parallel an mehreren Projekten arbeitet, möchte man pro Projekt separate Multiplexer-Instanzen sowie den Zustand von Fenstern, Panes und Tabs behalten
- Einen ähnlichen Zweck wie tmux-
session erfüllen in WezTerm Workspaces
- Es wird eine Struktur verwendet, bei der
projects.lua eine Projektauswahlfunktion bereitstellt, die von der Hauptkonfiguration geladen wird
- Das erste Beispiel listet Projektpfade direkt auf und zeigt mit
InputSelector eine Auswahl-UI an
- Mit
fuzzy = true wird Fuzzy-Suche aktiviert
- Das Auswahlergebnis wird zunächst nur als Log im Debug-Overlay ausgegeben
LEADER + p öffnet die Projektauswahl-UI, und LEADER + f zeigt die vorhandene Workspace-Liste per Fuzzy-Suche an
action = wezterm.action.ShowLauncherArgs { flags = 'FUZZY|WORKSPACES' }
- Der Aufwand, Projektpfade manuell zu pflegen, wird reduziert, indem mit
wezterm.glob() Unterverzeichnisse des Projektordners automatisch gesammelt werden
- Das Beispiel verwendet Unterverzeichnisse unter
~/Projects als Projekte und nimmt auch das Home-Verzeichnis in die Projektliste auf
- Wird ein Projekt ausgewählt, wird
SwitchToWorkspace ausgeführt
- Existiert der Workspace, wird dorthin gewechselt
- Existiert er nicht, wird er neu erstellt
- Als Workspace-Name wird das letzte Segment des Pfads verwendet
- Das aktuelle Arbeitsverzeichnis des neuen Terminals wird auf den ausgewählten Projektpfad gesetzt
Was man noch ausprobieren kann
- WezTerm bietet viele weitere Funktionen, die in der Funktionsliste aufgeführt sind
- Die Möglichkeiten der Lua-Konfiguration lassen sich in den WezTerm API docs weiter erkunden
- Bei einer schrittweise nachgebauten Konfiguration ist es sinnvoll, nur die tatsächlich genutzten Teile zu behalten, sie im eigenen Stil neu zu schreiben und dann die benötigten Funktionen zu ergänzen
- Wenn einem WezTerm gefällt, kann man Wez, der an Open Source arbeitet, auch unterstützen
1 Kommentare
Meinungen auf Hacker News
Ich bin vor Kurzem zu WezTerm gewechselt und bin sehr zufrieden.
Davor habe ich kitty genutzt, und nach dem Umstieg von iTerm2 gefielen mir dessen Konfiguration und Einfachheit. Was die mitgelieferten Funktionen angeht, ist WezTerm aber deutlich besser. Auch die Terminal-Konfiguration ist so kurz, dass sie auf eine Editor-Ansicht passt, und seitdem stört das Terminal einfach nicht mehr, sodass ich mich nicht weiter darum kümmern muss.
Der entscheidende Grund, kitty aufzugeben, war, dass ich jedes Mal, wenn ich auf ein Problem stieß oder eine iTerm2-Funktion nachbauen wollte, kurze, abweisend wirkende Antworten des Maintainers zu sehen bekam.
Ich erinnere mich zum Beispiel, dass auf die Frage „Wie richtet man tmux in kitty ein?“ sinngemäß mit „Lass es, tmux ist dumm“ geantwortet und der Fall geschlossen wurde; da habe ich schließlich aufgegeben.
Natürlich ist es sein eigenes Projekt und er ist ein hervorragender Programmierer, aber ein bisschen Demut würde wohl nicht schaden.
Für alle, die es nicht kennen: Das ist ein Fenster, dessen Ein-/Ausblenden man mit einem bestimmten Tastenkürzel umschaltet und das, wenn es angezeigt wird, über allen Fenstern schwebt, sodass man das Terminal von überall sofort nutzen kann. Man kann zwar auch ohne leben, aber ich möchte diese Funktion nicht ohne Not aufgeben; selbst wenn die anderen Funktionen von WezTerm gut sind, wäre es für mich ohne das von vornherein raus.
Nach außen wirkt es oft wie das beste Produkt, aber sobald man es intensiver nutzt, sitzt man in den Entscheidungen dieser Person fest und hat keinen Ausweg mehr.
Als ich Anfang dieses Jahres WezTerm zu nutzen begann, war ich allerdings wirklich überrascht. Ich habe viele Texte von Wez gelesen, und der Ton war jedes Mal perfekt; ich fand das wirklich großartig.
Bezeichnend ist, dass es nicht einmal die alte
make menuconfig-UI von Linux korrekt rendern kann und man das auch nicht per Einstellung beheben kann, weil er offenbar nicht an Konfiguration glaubt. Wenn man den Issue-Tracker liest, ist das nicht nur beleidigend; es löst sogar das ungesunde Gefühl aus, dass ich meine zufällige Art, ein Terminal zu benutzen, genauso heftig „verteidigen“ müsste.Sicher wissen kann ich es nicht, aber selbst wenn ich in allen Terminal-Fragen seiner Meinung wäre, hätte ich wohl trotzdem das Gefühl, lieber ein eigenes Terminal zu bauen, als seines zu benutzen.
Meiner Erfahrung nach reagiert Wez erstaunlich schnell auf GitHub-Issues, und wenn tatsächlich etwas falsch ist, behebt er es meist innerhalb von ein, zwei Tagen.
Abgesehen von ein, zwei kleinen Beschwerden zu Modifier-Tasten über SSH hinweg passt der Funktionsumfang fast perfekt zu meinen Bedürfnissen, und außerdem ist es schnell. Früher war ich ein begeisterter Alacritty-Nutzer, brauchte aber bessere Modifier-Unterstützung in entfernten Emacs-Sitzungen.
Ich habe zwar einen Kommentar zu einem bereits geschlossenen Issue geschrieben, aber es war jedenfalls als „won’t do“ geschlossen, und mein Kommentar wurde ignoriert. Ich wollte kein neues Issue mit demselben, bereits abgelehnten Thema eröffnen.
https://github.com/wez/wezterm/issues/4706
Kombinationen wie
C-S-"werden vom Terminalprotokoll nicht unterstützt, es gibt also keine gute Möglichkeit, sie zu senden. Deshalb habe ich WezTerm stattdessen" c s '"senden lassen und in Emacs eine zusätzliche Bindung eingerichtet. Dank dieses F12-Tricks konnte ich auch recht komplexe Kombinationen senden, die das Terminalprotokoll nicht unterstützt.Ursprünglich habe ich WezTerm installiert, als ich von Kubuntu zu Ubuntu gewechselt bin, weil ich einige Funktionen von Konsole nutzen wollte, ohne Konsole zu installieren, zum Beispiel unbegrenzten Scrollback und die Suche im Scrollback.
Ich weiß, dass man Konsole auch unter Gnome installieren kann, aber irgendwie fühlte sich das nicht passend an. WezTerm gefiel mir sofort, aber durch diesen Artikel ist mir klar geworden, dass ich bei den Konfigurationsmöglichkeiten bisher nur an der Oberfläche gekratzt habe.
Mein einziger Kritikpunkt ist, dass viele Funktionen schwer zu entdecken sind. Die Dokumentation ist wirklich gut, und der Autor ist aktiv und hilfsbereit, aber ich habe zum Beispiel einmal herausgefunden, wie man große Textblöcke nur mit der Tastatur auswählt, es ausprobiert und gedacht: „Das muss ich mir merken!“ – und es dann sofort wieder vergessen. Jetzt markiere ich wieder wie ein kompletter Anfänger mit der Maus. Da ich das ohnehin nicht oft mache, ist das schneller, als die entsprechende Doku-Seite erneut zu googeln.
Die erwähnte Seite ist übrigens https://wezfurlong.org/wezterm/copymode.html; vom Namen her klingt sie nach dem, was ich gesucht hatte, aber es ist nicht die völlig andere Funktion https://wezfurlong.org/wezterm/quickselect.html. Auch die ist sehr nützlich und eine gute Idee, aber nicht das, wonach ich gesucht hatte.
https://github.com/bbkane/dotfiles/tree/master/wezterm
Schon im Standardzustand ist er nützlich, aber seine eigentliche Stärke liegt darin, dass man die regulären Ausdrücke für Treffer anpassen kann. Ich habe einen Regex hinzugefügt, der alle Dateinamen in der Ausgabe von
eza --iconsfindet;\p{Co}matcht dabei die Icons. Deshalb habe ichlsals Alias aufezagesetzt und kann dann sofort mit Shift+QuickSelect-Buchstabe jeden beliebigen Dateinamen eingeben.Ich habe diese Möglichkeit noch nicht gefunden, weshalb ich häufig zusätzlich eine Konsole-Session offen habe. Beim Tailing von Live-Logs sind diese beiden Funktionen wirklich mächtig.
Nachdem ich Mac Terminal, iTerm2, Kitty, Warp und andere ausprobiert hatte, bin ich am Ende bei WezTerm geblieben.
Es ist einfach zu konfigurieren, schnell und sieht gut aus. Ich habe auch ein Theme dafür erstellt.
https://tiniri.vlad.studio/
Beim Vergleichen verschiedener Terminals bin ich zufällig auf diese Seite gestoßen: https://terminaltrove.com/terminals/
Sie wirkt ziemlich nützlich für alle, die Terminals vergleichen möchten.
Ich nutze WezTerm seit etwa einem Jahr und unterstütze Wez auf GitHub; es ist ein hervorragendes Terminal, und er ist ein guter Entwickler.
Auch wenn der Artikel sagt, dass er es nicht behandelt, gehören Quick Copy und die anderen Kopiermodi zu meinen Lieblingsfunktionen. Ich benutze sie wirklich ständig. Man drückt
C-S-Spaceund gibt dann den Buchstaben ein, der neben dem Element angezeigt wird, das man kopieren möchte.Ein wichtiger Anwendungsfall ist, auf einem macOS-Laptop etwas Ähnliches wie mosh+tmux für eine Linux-Maschine der Firma zu verwenden. Ich lasse immer eine Session laufen und kann vom Mac aus auf der Firmenmaschine arbeiten. Es bietet wiederverbindbare Sessions mit Panes und Tabs, sodass ich auch arbeiten kann, wenn ich nicht am Platz bin, und die Qualität ist sehr hoch.
Ich frage mich, was einem an WezTerm nicht gefallen könnte.
Meine Lieblingsfunktion, die aber oft übersehen wird, ist die vollständige Cross-OS-Unterstützung. Wenn man wie ich mit Linux, macOS und Windows arbeitet, muss man nur WezTerm lernen, und das war’s. Einen großen Teil meiner Terminal-Konfiguration teile ich ebenfalls zwischen den Betriebssystemen.
Vielleicht ist es nur mein Problem oder liegt daran, wie ich tmux nutze, aber wenn ich Zeilen kopierte, die umgebrochen waren, schien der kopierte Text Zeilenumbrüche zu enthalten. Das war sehr störend, und ich vermute, dass es an der Interaktion zwischen WezTerm und tmux lag.
Ich habe nicht genug Belege, um einen guten Bug-Report zu schreiben, und da WezTerm mit „ssh domains“ einen eigenen Terminal-Multiplexing-Server hat, ist es vielleicht auch nicht wichtig genug, um es zu beheben. Aber ich möchte den WezTerm-Multiplexing-Server nicht überall installieren, und auf den Hosts, auf die ich per SSH gehe, ist in der Regel bereits tmux vorhanden.
Abgesehen davon ist WezTerm hervorragend.
Die Einstellmöglichkeiten unter macOS sind begrenzt und erfordern diverse Workarounds; man kann zwar Linux an macOS anpassen, aber die macOS-Tastenkürzel selbst mag ich nicht besonders. Dadurch entsteht so ein seltsamer Mischzustand, und bei jedem Wechsel drücke ich ständig die falschen Tasten.
Ich frage mich, ob jemand eine gut passende Konfiguration gefunden hat.
Ich weiß nicht warum und auch nicht, wie ich das diagnostizieren soll. Ein großer Scrollback ist meine einzige Vermutung, aber darauf kann ich nicht verzichten. Am Ende bin ich zu Kitty gewechselt; Kitty hat zwar auch seine Probleme, aber zumindest funktioniert es.
Die Konfigurationssprache Lua glänzt, weil sie umgebungsspezifische Änderungen ziemlich einfach macht. Ich denke auch, dass es einen unterschätzten Nebeneffekt von Rust gibt. Moderne Rust-Tools haben oft hervorragende Cross-Platform-Unterstützung, vielleicht weil die Abstraktionsschicht zwischen Sprache und Betriebssystem gut ist.
Um 2019 herum reichte es mir schon, das wez-Repository einmal in Bezug auf GitHub Actions, Issues und Dokumentation mit anderen zu vergleichen, um überzeugt zu sein, und seitdem bin ich nicht mehr zurückgewechselt. Tab-Unterstützung ist sogar standardmäßig dabei.
Es ist das erste Terminal, das urxvt in Sachen Unterstützung und Geschwindigkeit wirklich ersetzt hat. Davor nutzte ich termite und behielt urxvt als Backup, falls termite in merkwürdigen Situationen Bugs zeigte.
Der Grund, warum ich bei iTerm2 bleibe, ist
Edit->Selection Respects Soft Boundaries.Das ist die Funktion, bei der „wenn sie aktiviert ist, der vertikale Strich des Pipe-Zeichens
|wie eine Pane-Trennlinie in vim oder emacs interpretiert wird und die Auswahl an dieser Stelle umbricht“.In meinem Fall brauche ich das, wenn ich in IRC Text auswähle.
https://github.com/wez/wezterm/issues/596
Niemand braucht alle Funktionen, aber jeder hat 10 Nischenfunktionen, die er haben will, und diese 10 sind nicht dieselben. Um also seine 10 Nischenfunktionen zu bekommen, akzeptiert man den Bloat.
Edit: Das war grob formuliert, sorry. Ich hatte übersehen, dass du es in IRC verwendest.
Ich war iTerm2-Nutzer, seit ich vor fast 10 Jahren zum ersten Mal macOS zu verwenden begann.
In letzter Zeit kam es mir aber wirklich langsam vor, und als ich nach einem Wechsel mit
cmd-tabüber eine Sekunde warten musste, bis das Terminal erschien, war meine Grenze erreicht.Ich habe mir ein paar Alternativen angesehen, aber nichts passte so richtig. Ein Terminal brauchte ein Konto/Login, um zu funktionieren, was ein großer Nachteil war, und ein anderes war in {Java,Type}Script geschrieben und hat wegen der asynchronen Natur von Node.js-Streams sogar einfache Befehle wie
yeskaputtgemacht.Bisher gefällt mir WezTerm sehr gut. Es ist ziemlich schnell, sehr gut konfigurierbar, und das Theme, das ich in iTerm2 eingestellt hatte, OneDark(base16), ist standardmäßig enthalten.
Die einzige anfängliche Unannehmlichkeit war, dass ich
cmd-leftundcmd-rightin der Lua-Konfiguration selbst hinzufügen musste; es wäre schön gewesen, wenn das in den Defaults enthalten wäre.Wez veröffentlicht auch ein Buch über Rust-Systemprogrammierung.
https://leanpub.com/sysprog
Das ist ein guter Beitrag, und vielleicht probiere ich WezTerm einmal aus, aber ich bin erst vor Kurzem zu Kitty gewechselt und möchte nicht zu häufig wechseln.
Allerdings braucht es eine Korrektur zu Kitty: Kitty verwendet weder YAML noch TOML, sondern eine eigene einfache Konfigurations-DSL, und darüber hinaus lässt es sich vollständig mit Python skripten.