ubuntuusers.de

gedit Spaces statt Tabs bei C-Dateien

Status: Gelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

frank-w

Anmeldungsdatum:
30. September 2008

Beiträge: 419

Hallo

weis jemand wo die Einstellung für das syntax-highlighting definiert ist?

scheinbar ist bei C-Dateien ein 2-space-tab Ersetzen definiert...also wenn ich Tab in einer C-Datei drücke werden 2 Leerzeichen eingefügt. die globalen Einstellungen sind schon auf Tab und 8 spaces pro tab, wird aber ignoriert.

Gruß Frank

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

das sollte eigentlich nichts miteinander zu tun haben. Der Syntax einer Programmiersprache hat nichts mit der Einrückung zu tun.

Am besten nochmal in deine Einstellungen schauen.

Und die meinst doch, wenn du selber Code schreibst? Wenn du eine bestehende Datei öffnest werden natürlich die in der Datei verwendeten Einrückungen genommen, zumindest bei dem bestehenden Code.

Gruß, noisefloor

frank-w

(Themenstarter)

Anmeldungsdatum:
30. September 2008

Beiträge: 419

naja, es gibt schon sprachen,wo die konvertierung von tabs2spaces Sinn macht (python z.b.), aber bei C sollte es es schon bei tab bleiben. wenn ich eine C-Datei öffne (aus dem u-boot-quellcode) und drücke darin tab, werden 2 spaces eingefügt...stelle ich die Syntax auf plain-text ein, bekomme ich tabs.

viel zum Einstellen gibt es da scheinbar nicht, denn ich habe es bereits auf "Tabulatoren" (statt "Leerzeichen") und bei Leerzeichen pro Tabulator ist 8 ausgewählt.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6518

Wohnort: Hamburg

naja, es gibt schon sprachen,wo die konvertierung von tabs2spaces Sinn macht (python z.b.), aber bei C sollte es es schon bei tab bleiben.

Kann ja sein, aber das ist nicht unbedingt Aufgabe des Editors. Zumal jeder Programmierer da seine eigene Ansicht darüber hat, wie einzurücken ist. Ich habe da oft 2, 4 oder 8 Spaces gesehen. Ich bevorzuge 4.

Aber davon abgesehen, sollte man das in jeden ordentlichen Editor einstellen können. Was aber nicht bedeutet, dass vorhandene Einrückungen, die mit Leerzeichen gemacht wurden, automatisch in den persönlichen Stil konvertiert werden können.

Ich verwende Geany und vermeide das TAB Zeichen (Eingabe wird vom Editor in Leerzeichen umgesetzt).

Ich erinnere mich, dass es in der Steinzeit der Mikrocomputer (auf Z80) Programme wie entab und detab gab, mit denen man das anpassen konnte.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

@frank-w: du hast die Frage nicht beantwortet... Codest du selber oder willst du in einer bestehenden Datei Leerzeichen durch Tabs (oder umgekehrt) ersetzen? Das sind zwei verschiedene Sachen...

denn ich habe es bereits auf "Tabulatoren" (statt "Leerzeichen") und bei Leerzeichen pro Tabulator ist 8 ausgewählt.

Das steht doch im Widerspruch... wenn du Tabulatoren willst brauchst du die andere Einstellung nicht.

es gibt schon sprachen,wo die konvertierung von tabs2spaces Sinn macht (python z.b.)

In erster Instanz verlangt Python eine _konsistente_ Einrückung, also keinen Mix. Aber ja, Empfehlung der PEP8 sind Einrückungen mit 4 Leerzeichen pro Ebene. Aber nochmal: das macht Gedit (und AFAIK auch kein anderer Editor) automatisch und erst recht nicht via Syntaxhighlighting.

Gruß, noisefloor

frank-w

(Themenstarter)

Anmeldungsdatum:
30. September 2008

Beiträge: 419

ich möchte in einer vorhandenen Datei einfach weitercoden...in der der Datei sind Tabs als Einrückung drin, aber ich bekomme keine eigenen Tabs da rein (nur wenn ich die von woanders kopiere), da immer nur 2 Leerzeichen eingefügt werden..ich habe die Standard-Einstellung, hatte nur zum Test mal hin und wieder zurückgeändert. Hatte das Problem unter Ubuntu 22 nicht und wie gesagt, wenn ich auf die Syntax auf Text stelle (die gleiche Datei ist noch geöffnet) kann ich Tabs einfügen. Es scheint also an der Syntax-Einstellung (was ja normal nicht nur das reine Highlighting ist, sondern meist auch zusätzliche Sachen wie die Einrückung, Klammern-Matching, automatische Einrückung bei bestimmten keywords etc.) zu liegen. habe aber noch nicht herausfinden können, wo die Definitionen dazu liegen.

Naja, Leerzeichen pro Tab ist nicht ganz widersprüchlich, da es auch als entsprechende Breite gerendet werden kann...also das Tab ein Tab bleibt, aber nur die Breite von z.b. 4 Leerzeichen einnimmt.

Und ja ich weis, dass Python Spaces statt Tabs will...mir gehts aber um die Eingabe...und bei C will ich bei Tab auch ein Tab haben.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

ok... wenn du beim Druck auf die Tab-Taste ein Tab haben willst darfst du unter "Einstellungen → Editor" _nicht_ "Anstellen von Tabulatoren Leerzeichen einfügen" aktiviert haben. Mit "Tabulatorbreite" stellst du ein, wie du schon sagst, wie vielen Leerzeichen ein Tab entspricht.

Die Einstellung ist AFAIK global aktiv und nicht vom Dokument bzw. der Syntaxhervorhebung abhängig. Jedenfalls kann ich bei mir nicht nachstellen, dass sich irgendwas ändert, wenn ich eine Datei öffne, wo definitiv Leerzeichen statt Tabs drin sind, Gedit aber auf Tabs steht.

Um herauszufinden, ob man wirklich ein Tab hat (und nicht 2 oder 4 oder 8 Leerzeichen) kann man vor das erste Zeichen der eingerückten Zeile gehen und drückt 1x die Pfeil nach links Tasten. Springt der Cursor mehr als ein Zeichen nach links hat man Tabs, bei Leerzeichen springt der Cursor (logischerweise) zeichenweise.

Oder du öffnest die Datei mit einem Hex-Editor. 09 ist ein Tab, 20 ein Leerzeichen.

Gruß, noisefloor

frank-w

(Themenstarter)

Anmeldungsdatum:
30. September 2008

Beiträge: 419

noisefloor schrieb:

ok... wenn du beim Druck auf die Tab-Taste ein Tab haben willst darfst du unter "Einstellungen → Editor" _nicht_ "Anstellen von Tabulatoren Leerzeichen einfügen" aktiviert haben. Mit "Tabulatorbreite" stellst du ein, wie du schon sagst, wie vielen Leerzeichen ein Tab entspricht.

Die Einstellung ist AFAIK global aktiv und nicht vom Dokument bzw. der Syntaxhervorhebung abhängig. Jedenfalls kann ich bei mir nicht nachstellen, dass sich irgendwas ändert, wenn ich eine Datei öffne, wo definitiv Leerzeichen statt Tabs drin sind, Gedit aber auf Tabs steht.

hast du auch ubuntu 24.4? diese Einstellung finde ich nämlich nicht...

es gibt die Ansichtsoptionen, wo ich wie gesagt nur zwischen Tabulatoren (ausgewählt) und Leerzeichen (nicht) auswählen kann, die entsprechende Breite (8) und automatische Einrückung deaktiviert ist.

Dann gibt es den "Burger-Button" (Menüsymbol) die allgemeinen Einstellungen...Hier gibt es "Dateieinstellungen übernehmen" und wenn ich das deaktiviere habe ich auch die normalen Tabs...scheinbar funktioniert die Erkennung der Einrückung nicht sauber...

ansonsten habe ich bereits knapp 25 Jahre Programmiererfahrung mit diversen Editoren und ähnlich lange mit Linux (Debian Potato als erstes ☺ ), das erste Ubuntu dürfte 8.4 (hardy) gewesen sein. Mir gehts also mehr darum herauszufinden, _warum_ es so unlogisch ist, sprich, wo man das evtl. einstellen kann...aber ich werde vermutlich mal nen Bugreport schreiben...es wird auch ziemlich viel von gedit auf console geloggt (u.a. Gtk-Warnings), wenn man es darüber aufruft (gerade so C&P Aktionen).

aktuell habe ich die relativ kleine timer-uclass.c aus dem u-boot-repo auf und selbst da ist der Fehöler nachstellbar, dort ist eigentlich alles mit Tab eingerückt...ich sehe nur eine Einrückung mit zusätzlich leerzeichen (Anpassung an Klammern bei mehrzeiliger Bedingung - Styleguide) wo ich vermute, dass daher die falsche Leerzeichenerkennung kommt

1
2
		if (ofnode_valid(node) &&
		    uclass_get_device_by_ofnode(UCLASS_TIMER, node, &dev)) {

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9785

Wohnort: Münster

Hast Du wirklich gedit?

Das Programm ist jedenfalls bei 24.04 nicht mehr der Standard für den Texteditor.

frank-w

(Themenstarter)

Anmeldungsdatum:
30. September 2008

Beiträge: 419

guter Einwand...es wird zwar mit "gedit" gestartet (offensichtlich hat es sich den alternatives-link mit gesetzt), ist aber scheinbar der gnome-text-editor lt. "Über"-Seite

$ sudo update-alternatives --query gedit
Name: gedit
Link: /usr/bin/gedit
Status: auto
Best: /usr/bin/gnome-text-editor
Value: /usr/bin/gnome-text-editor

das würde den unreifen Zustand im Vergleich zu Ubuntu 22 erklären

also mal das richtige gedit nachinstalliert, Thema und Schriftgröße (weise Leiste für Zeilennummern im Dark-Theme und Schriftgröße 12 nicht gut ☺ ) und tab funktioniert in der Standardeinstellung mit der gleichen Datei ohne Probleme...wird mit gedit gestartet, aber der alternatives-Eintrag ist unverändert :p ist aber kein link mehr...also alternatives zeigt falsch an

$ which gedit
/usr/bin/gedit
$ ls -l /usr/bin/gedit
-rwxr-xr-x 1 root root 14640 Jan 23 22:13 /usr/bin/gedit

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

das würde den unreifen Zustand im Vergleich zu Ubuntu 22 erklären

Es gibt kein Ubuntu 22... Es gibt Ubuntu Core 22, Ubuntu 22.04 und Ubuntu 22.10... Aber du hast ja auch nicht den Editor genutzt, von dem du dachtest, ihn zu nutzen *SCNR*

Abgesehen davon: Gnome Text Editor ist der neue Standard des GNOME Projekts, und zwar seit GNOME 42 (=März 2022). In Ubuntu ist der GNOME Text Editor erstmals seit 23.10 der Defaulteditor. "unausgereift" würde ich GNOME Text Editor auch nicht nennen... Das Programm kann so wenig (und noch weniger als Gedit), dass da eigentlich nix zum Reifen ist.

Wie schon vor X Posts gesagt wurde: wenn man ein bisschen mehr Komfort möchte weder gedit oder GNOME Text Editor nehmen, sondern z.B. Geany.

Gruß, noisefloor

frank-w

(Themenstarter)

Anmeldungsdatum:
30. September 2008

Beiträge: 419

für den Komfort habe ich vscode 😉

für kleine Sachen ist mir der aber zu träge bzw. müsste bestimmte Sachen (z.B. Tastenkürzel) erst einrichten, was ich unter ubuntu 24.4 noch nicht gemacht habe (installiert ist er schon)...

und ja, meinte natürlich ubuntu 22.4, das mit dem Funktionsumfang ist mir aufgefallen, dass der noch weniger kann als Gedit vorher, hätte nur nicht gedacht, dass das ein anderer Editor ist, der sich /usr/bin/gedit krallt...editor hätte ich noch verstanden...

Antworten |