Ich nutze bei der Arbeit ein Apple Magic Keyboard an einer Linux-Maschine. Von Zeit zu Zeit bekomme ich beim Arbeiten seltsame Fehler. In IntelliJ passiert das sogar bei manchen Completions – dann wird ein Leerzeichen mit roter Wellenlinie unterstrichen.
Beim Kompilieren kann diese Warnung auftauchen:
Error:(38, 31) java: illegal character: '\u00a0'oder sogar Bash-Befehle werden nicht mehr erkannt:
$ echo "test"
zsh: command not found: echo testMit bless ~/Documents/myfile.md wollte ich wissen, wie das so durcheinandergerät. Nach Auswahl des Leerzeichens in bless zeigte sich die Hex-Darstellung C2 A0. Nach etwas Recherche war klar: Das ist ein non-breaking space, der je nach Encoding der Datei als 00 A0 oder C2 A0 dargestellt wird.
Aber warum? Wie kam dieses geschützte Leerzeichen überhaupt herein?
Ich öffnete ein Terminal und führte sudo showkey -a aus, um alle Tastendrücke zu beobachten. Dann probierte ich diverse Kombinationen mit der Leertaste, bis diese Ausgabe kam:
194 0302 0xc2
160 0240 0xa0– beim Drücken von Shift+Space. Erwischt! Auf meinem Schweizerdeutschen Apple-Tastaturlayout entsteht der non-breaking space also mit Shift+Space. Ich kannte dieses Zeichen bislang nur von Option+Space auf dem Mac.
Das ist ausgesprochen nervig für alle, die Shift drücken, weil nach dem nächsten Leerzeichen ein Grossbuchstabe kommen soll.
Die Einstellung dafür ist nicht in den Standard-Gnome-Preferences enthalten. Um sie zu ändern, musst du gnome-tweaks installieren:
sudo apt install gnome-tweaksStarte Gnome Tweaks und finde unter “Keyboard & Mouse” -> “Additional Layout Options” die Einstellung “Using space key to input non-breaking space”. Bei mir funktioniert “Usual space at any level” bestens, da ich noch nie einen non-breaking space gebraucht habe. Und das Problem ist weg!
Linux Mint: Für Linux Mint gibt es dafür bereits eine GUI, gnome-tweaks brauchst du nicht. Gehe zu Settings -> Keyboard -> Tab “Layouts” -> rechts unten “Options…”. Dort gibt es eine Liste mit dem Eintrag “Using space key to input non-breaking space”.