$PROGRAMMIERSPRACHE + $EDITOR + $GITHUB zusammen lernen (z.B. Python+(Neo)vim+Github) - sinnvoll? Tipps?

Hinweis: In dem Thema $PROGRAMMIERSPRACHE + $EDITOR + $GITHUB zusammen lernen (z.B. Python+(Neo)vim+Github) - sinnvoll? Tipps? gibt es 7 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Hallo,


    mir kam gerade die Idee, meine grundlegenden Programmierkenntnisse (Pascal) evtl. mal systematisch zu erweitern.


    Die erste Hürde wäre die Entwicklungsumgebung. Die wichtigsten Tools sind in der Pascal-/Delphi-Welt ja seit Urzeiten integriert. Und ich habe aufgrund der hobbymäßigen Beschäftigung mich nie mit Git befasst.


    Meine Gedanken:

    - Python ist mittlerweile der Universalkleber in der IT-Welt, eine Befassung damit sollte nicht schaden

    - Alle erzählen immer von vim und Emacs als wichtigste Unix-Editoren. Könnte man bei der Gelegenheit ja gleich mitlernen...? Vim scheint etwas "einfacher" zu sein als Emacs. Mittlerweile schwören sehr viele aber auch auf die Neovim-Variante. VisualStudio ist mir auch ein Begriff und es ist für Linux verfügbar, aber MS wollte ich in dem Zusammenhang vermeiden...

    - tja und dann eben Git dazu.


    Erstes Ziel wäre die Einrichtung einer Umgebung zum Coden. Also: 1. Installieren des Editors, 2. schauen, ob man Syntax-Highlighting hinbekommt mit irgendwelchen Erweiterungen, 3. Ein Hallo-Welt schreiben, 4. Hochladen in github.


    ...und das ganze schlau verzahnen, sodass man dabei wenig Tipparbeit hat und die wichtigen Schritte irgendwie gescriptet sind (zum Testen des Codes, git push usw.). Also nicht manuell zeilenlange handgetippte Pfade zu Dateien an irgendwelche Tools übergeben... Dabei lernen, wie man seine Sourcen organisiert usw.


    Bin ich da auf dem richtigen Weg? Kennt ihr gute Tutorials? Würdet ihr bei Python und Neovim mitgehen, oder gibt es da bessere Vorschläge? :/

    Für den Inhalt des Beitrages 327355 haftet ausdrücklich der jeweilige Autor: Spaceloop

  • Habe mal herumrecherchiert.


    Ich werde folgendes Projekt mal weiter beobachten und bei Gelegenheit testen:


    celltoolz IDOL IDE


    idol-ide/README.md at master · celltoolz/idol-ide
    The Python IDE with a drag-and-drop Tkinter GUI Designer — plus LSP diagnostics, debugging, Git, and AI assistance, all built in. - celltoolz/idol-ide
    github.com


    Scheint so eine Art Delphi/Lazarus für Python zu sein.


    Zitat

    IDOL is what IDLE could have been — a full Python IDE with professional-grade tools (Designer, LSP, git, terminal, split editor) and a built-in learning platform designed to grow with you. Beginner-friendly without being beginner-limited. Pure Python, no Electron, no dependencies beyond pip.


    Runs natively on Windows, macOS, and Linux from a single codebase.

    vim oder neovim stelle ich dann erstmal hintenan.

    Für den Inhalt des Beitrages 327378 haftet ausdrücklich der jeweilige Autor: Spaceloop

  • Ich weiß nicht, wie tief du in die Materie reingehen willst. Für mich reicht meistens kate ganz gut, mit F4 kannst du dort die Konsole dazu ein und ausschalten. Kate unterstützt auch für viele Programmiersprachen eine passende Farbgebung. Ich versuche gerade (schon wieder) ein klein wenig Rust zu lernen.

    Für den Inhalt des Beitrages 327408 haftet ausdrücklich der jeweilige Autor: JeyF123

  • Also ich habe inzwischen folgende Überlegungen:


    Schlau ist es vermutlich, das Entwicklungssystem vom Produktivsystem zu trennen. Gerade bei Python scheint es mir sinnvoll zu unterscheiden zwischen einer Nutzung der Python-Bibliotheken durch fertige Programme und herumpfuschen innerhalb von Python beim Programmieren. ;)


    Ich hatte erst die Vorstellung, in Virtualbox zu diesem Zweck ein Guix-System aufzusetzen. Da hätte ich mich gleich nebenbei noch mit deklarativ konfigurierbaren Linuxdistributionen befassen können. Allerdings ist die Guix-VM nach einigen Startversuchen plötzlich nicht mehr hochgefahren. Warum? War mir unerklärlich. Insgesamt erschien mir die Lösung dann doch zu fragil.


    Anschließend habe ich versucht, mit Distrobox einen Container mit Tumbleweed und grafischer Oberfläche zu erzeugen. Was mir aber nicht geglückt ist. Mit X11 hatte ich immer Rechte-Probleme (xfce). Mit Plasma-Wayland habe ich immerhin kurz eine Startgrafik gesehen. Das Fenster ist dann aber mit Mauscursor auf schwarzem Hintergrund eingefroren.


    Also dann doch wieder zurück zu Virtualbox... Wahrscheinlich mit einem ganz banalem Tumbleweed-System, evtl. aber auch NixOS?


    Beim Editor habe ich auch weiter recherchiert.


    1) Neovim ist im Auslieferungszustand kam brauchbar, aber man kann es beliebig tunen und aufbohren. Es gibt eine Reihe vorgefertigter Konfigurationen. Am verbreitetsten scheint "Lazy Vim" zu sein. Es basiert auf einem Plugin, was eine Reihe weiterer kuratierter Plugins per Klick nachlädt und aktuell hält. Man bekommt die Plugins damit mit überschaubarem Aufwand zum Laufen.


    🚀 Getting Started | LazyVim
    LazyVim is a Neovim setup powered by 💤 lazy.nvim
    www.lazyvim.org


    Es ist extrem krass, wieviel Zeit man damit verbringen kann, sein Neovim richtig einzurichten. Man braucht Dinge wie Treesitter, LSP-Server, Code-Verschönerer usw. Ich hoffe, dass ich da mit Lazyvim einen guten Einstieg finde.


    Ich wollte mich an diese Anleitung halten:


    How to Install Neovim and Set Up LazyVim on Linux: A Complete 2026 Tutorial - Note Arena | Learn. Note. Build.
    Back to: Linux So you’ve heard the buzz about Neovim. Maybe you’ve seen a colleague fly through code at lightning speed, or you’re tired of bloated editors…
    notearena.com


    Sinnvoll ist es offenbar, das meiste direkt aus dem git zu ziehen und dann zu bauen.


    Jedenfalls handelt es sich um ein ganz anderes Kaliber als der Freepascal-Editor oder Lazarus... :S


    2) Für grafische Sachen mit tkinter wollte ich dennoch celltoolz IDOL IDE testen, das kann ja dann zusammen auf das virtuelle Entwickel-System.


    3) Dann wollte ich noch schauen, dass ich einen eigenen git-Account bekomme. Um MS zu vermeiden, habe ich mir Codeberg ausgeguckt. Ich hoffe, dass das mit Lazyvim zum laufen zu bekommen ist, und dass ich für den Anfang meine ersten Gehversuche auf "Privat" stellen kann (wegen Code-Shaming... :wacko: )

    Für den Inhalt des Beitrages 327689 haftet ausdrücklich der jeweilige Autor: Spaceloop

  • Schlau ist es vermutlich, das Entwicklungssystem vom Produktivsystem zu trennen.

    Eine gute Wahl. Deshalb habe ich auch mehrere System am laufen. Eines zum Beispiel für Internet, eines für Programmierung und eines zum testen von irgendwelchem Zeug. So bleibt das Produktivsystem immer unangetastet sauber. Und das ganze auf verschiedenen Festplatten.

  • Hab jetzt weiter rumgetestet und komme so langsam zu einem "Software-Stack":


    Coding-System 0.1


    1) Zielsprache: Python

    Warum Python? Es hat zwar einige Eigenschaften, welche mich persönlich nerven:

    - Gliederung durch Einrückungen

    - Scriptsprache mit einem Zoo teilweise inkompatibler Laufzeitumgebungen (2.7, 3.11, 3.13...)


    Aber es ist ja inzwischen allgegenwärtig. Es wird an Schulen gelehrt, teilweise laufen KI-Sachen damit, und auch viele Tools im Open Source-Umfeld basieren auf Python. Es gilt als nicht allzuschwer zu lernen.


    2) Basis: openSUSE Tumbleweed

    - Kommt als Rolling Release-Distro

    - Ist dennoch extrem stabil und QA-getestet

    - Vandalismussicher dank BTRFS und Snapper mit GRUB-Integration. Die einzige Distribution, bei deren Installationen ich bisher noch nichts dauerhaft zerstören konnte. :S


    Ich habe mich zuletzt auch testweise mit den deklarativ konfigurierbaren Distributionen GUIX und NixOS befasst. Davon wollte die Guix-VM in der Virtual Box plötzlich nicht mehr starten. Bei NixOS wollte ich den Channel auf unstable verstellen und habe mich an Tutorials aus dem Netz gehalten. Ich erhalte eine komische Fehlermeldung und komme im Moment auch nicht zurück. :/ Nach etwas Überlegung finde ich es für meinen Zweck fragwürdig, das Entwickel-System sozusagen über ein Script (die Datei configuration.nix) einzurichten und darüber auch festzulegen, welche Software verfügbar ist. Ich denke, der Ansatz ist eher gut wenn man z.B. eine Serverkonfiguration vervielfältigen möchte. Aber für mich bei meinem Einsatzzweck doch eher ungewohnt und sperrig. Dennoch würde ich auf das Projekt zurückgreifen und Nix einfach unter Tumbleweed installieren. So habe ich meine geliebte und v.a. stabile Tumbleweed-Basis und kann mir für Projekte isolierte, reproduzierbare Umgebungen anlegen. 8) Genau das ist ja sinnvoll bei dem Einsatzzweck des Systems.


    3) Nutzeroberfläche: Sway

    Sway ist eine i3-Weiterentwicklung für Wayland. Ich habe mich zunächst mit Awesome befasst, habe aber festgestellt, dass i3 deutlich beliebter zu sein scheint. Auch die Tatsache, dass mit Sway sehr schnell ein Wayland-Pendant bereit stand, scheint ja für die Beliebtheit des Konzepts zu sprechen. Vielleicht nehme ich irgendwann aber doch eine Awesome-Wayland-Alternative wie SomeWM...?


    4) Terminal: Ghostty
    https://ghostty.org/


    Ein gutes Terminal ist offenbar die Voraussetzung für Editoren wie vim. Wichtig ist beispielsweise die Unterstützung von Farben und Hackerfonts, welche spezielle Symbole enthalten, die beim Coden nützlich sind. Ghostty ist aktuell sehr beliebt, kommt sinnvoll vorkonfiguriert mit vielen notwendigen Dingen bereits integriert. Viele Youtube-Tutorials verwenden es ebenfalls.

    Installation: aus den Repos mit zypper


    5) Tool: Yazi File Manager
    https://yazi-rs.github.io/


    Es handelt sich um einen Terminal-Dateimanager, der es einem ermöglicht, rasant via Tastatur durch seine Verzeichnisse und Dateien zu browsen. Muss unbedingt dazu. 8)

    Installation: aus den Repos mit zypper


    6) Editor/IDE: Neovim
    https://neovim.io/


    vim ist ein Linux-Editor, den es schon seit Urzeiten gibt und bekannt ist. Er ist ist gut modifizierbar und zu einer guten Entwicklungsumgebung aufbohrbar. Neovim ist die verbreitete aktuelle Inkarnation von vim. (Neo-)vim zu lernen ist ebenfalls ein Ziel. Ebenso ist ein Ziel, Microsoft zu vermeiden (VS Code...)

    Installtion: aus den Repos mit zypper


    7) Editorkonfiguration: Lazyvim
    https://www.lazyvim.org/


    Neovim allein ist eine relativ freudlose und sperrige Angelegenheit. Erst mit der richtigen Konfiguration hebt er als Entwicklungsumgebung ab. Stichworte sind Treesitter, LSP und Linter-Plugins. Leider ist die Konfiguration für den Anfang extrem kompliziert. Es scheint eine unübersichtliche Fülle an Plugins zu geben, welche über Lua-Konfigurationsdateien einzurichten sind. Hierzu wurde Lazyvim erfunden. Es ist eine fertige Konfiguration mit Plugins. Herzstück ist ein Pluginverwaltungs-Plugin, worüber man (ähnlich wie in Yast Software) andere kuratierte Plugins finden und nachladen kann. Der Nachteil ist eine gewisse Online- und Projektabhängigkeit. Es scheint mir für den Anfang letztlich aber der für mich einzig gangbare Weg, Neovim aufzubohren. Es gibt auch andere fertige Neovim-Konfigurationen. Aktuell scheint mir Lazyvim aber am beliebtesten, weist eine größere Community auf und wird oft empfohlen.


    Es gibt sogar Online ein Buch für den Einstieg:

    LazyVim for Ambitious Developers


    Installation:

    -1- Neovim aus den Repos mit zypper installieren


    -2- Das Lazyvim-Projekt bietet in seinen Repos eine Einstiegs-Konfiguration an. Zunächst muss man diese auf ein gesondertes Verzeichnis unter ~/.config clonen, z.B.


    Code
    git clone https://github.com/LazyVim/starter ~/.config/lazyvim 

    -3- Anschließend startet man Neovim, weist aber über eine Umgebungsvariable den Verzeichnisnamen als Appnamen zu, sodass Neovim die soeben geclonte Konfiguration aus dem Verzeichnis gleichen Namens liest, also:

    Code
    NVIM_APPNAME=lazyvim nvim

    Das muss man jetzt immer machen, wenn man mit Neovim die Lazyvim-Konfiguration nutzen möchte.

    8.) isolierte Umgebungen: Nix


    Gerade bei Python muss man bezüglich der Laufzeitumgebungen etwas aufpassen, da man sie für ein einzelnes Projekt manchmal etwas umkonfigurieren muss. Es gibt inzwischen verschiedenste Lösungen und Ansätze, getrennte virtuelle Umgebungen für einzelne Python-Projekte zu schaffen.


    von/für Python:

    - virtual environments vom Python-Projekt selbst

    - Poetry: https://python-poetry.org/


    oder weiter gefasst:

    - Distrobox: Minimale Linux-Untercontainer als Laufzeitumgebung

    - Deklarative Umgebungsmanager wie nix und guix: https://guix.gnu.org | https://nixos.org/

    - Virtuelle Maschinen z.B. Oracle VirtualBox


    Ich würde hier erstmal mit Nix starten.

    - Poetry ist auf Python limitiert

    - Distrobox ist bei mir nicht ganz stabil und ich bin beim testen teilweise über Themen gestolpert, z.B. in Bezug auf eine ungünstige Abstimmung/Vererbung bestimmter Eigenschaften (Nutzerrechte) vom Host auf den Gast...

    - VMs /Virtualbox ist sehr schwerfällig

    - Nix hat das größere Ökosystem im Vergleich zu Guix und ich habe mich im Zuge meiner NixOS-Experimente damit ansatzweise befasst. Also Nix!

    Installation: aus den Repos mit zypper


    9) Versionsverwaltung/Git: Codeberg
    https://codeberg.org/


    Europäischer Datenschutz, heimische Plattform...



    So, mal sehen wie weit ich damit komme. :)

    Einmal editiert, zuletzt von Spaceloop ()

    Für den Inhalt des Beitrages 327796 haftet ausdrücklich der jeweilige Autor: Spaceloop

  • Habe noch einmal etwas recherchiert.


    zu 3) Window Manager

    zu Sway am besten Waybar und fuzzel (als Anwndungsstarter) dazu installieren.


    zu 4) Terminal

    Beim Terminal würde ich nun doch auf Kitty gehen. Laut meinen Recherchen sollte Kitty besser mit TilingWMs wie Sway zurecht kommen. Ghostty hat dagegen Stärken auf Floating WMs. Es basiert auf GTK und integriert sich gut in Gnome, XFCE oder auch MacOS (was der Grund sein dürfte für die Verbreitung auf Youtube).


    was ich mir auch noch angesehen habe:


    9) Shell: die zsh ist Posix-Kompatibel, aber im Gegensatz zur Bash gut anpassbar. Hier gibt es wie bei Neovim einen Plugin-Manager: ohmyzsh. Empfohlene Pulgins: zsh-autosuggestions, zsh-syntax-highlighting, z, powerlevel10k...


    Ergibt folgende Liste:

    1. Sprache zum Lernen: Python
    2. OS: Opensuse Tumbleweed als Basis-System
    3. WM: Sway Window Manager
      1. Arbeitsflächen-Leiste: Waybar für Sway
      2. Starter für Sway: fuzzel
    4. Shell: zsh (Liste ab hier umnummeriert)
      1. ohmyzsh als Pluginmanager, darüber installieren:
        1. zsh-autosuggestions
        2. zsh-syntax-highlighting
        3. z
        4. powerlevel10k
    5. Terminal: kitty
    6. Tool: Yazi File Manager
    7. Editor/IDE: Neovim
      1. Plugin-Manager: Lazyvim
        1. $Empfohlene Plugins mit *
        2. $Sprach-Plugins für Python
    8. Isolierte Umgebungen: Nix Shell/Paketmanager


    Nach dem Installieren sitzt man wahrscheinlich erstmal wie ein Schwein vorm Uhrwerk... 8o

    Für den Inhalt des Beitrages 327925 haftet ausdrücklich der jeweilige Autor: Spaceloop

  • Bin etwas weiter gekommen.


    Ich hatte die Befürchtung, dass man bei der manuellen Konfiguration sich heillos verzettelt. Beim weiteren recherchieren habe ich dann festgestellt, dass es von openSUSE bereits ein eigenes Pattern gibt:


    openSUSEWay:

    https://en.opensuse.org/Portal:OpenSUSEway


    Ich habe dann beschlossen, erst einmal damit einzusteigen, Tumbleweed mit diesem Pattern zu installieren und es dann für meine Bedürfnisse anzupassen. D.h. mit kitty (Terminal) statt alacritty, zsh (Shell) statt bash und fuzzel (App-Menü) statt wofi (oder hatte mir das Pattern dmenu installiert?)


    1. Sway allgemein

    Als erstes habe ich festgestellt, dass bei diesem Sway-Pattern wirklich alles per Config-Dateien einzustellen ist. Es beginnt zu allererst mit dem Tastaturlayout. Eine Einstellung per Yast funktioniert ausdrücklich nicht! Auch hierfür begibt man sich in die Konfigiurationsdatei.


    Es gibt eine Standard-Konfiguration von Sway unter /etc/sway/config


    Diese holt man sich ins Benutzer-Konfigverzeichnis unter ~/.config


    Code
    mkdir -p ~/.config/sway
    cp /etc/sway/config ~/.config/sway/config

    (solange ich mich unter Neovim nicht auskenne, verwende ich den mc mit eingebautem Editor)


    1.1: Tastaturlayout


    In die Datei habe ich dann irgendwo in Zeile 29 zwischen die Kommentare folgendes reingebastelt:

    ~/.config/sway/config:

    Code
    input * {
        xkb_layout de
        xkb_variant nodeadkeys
        }

    (funktioniert bei mir interessanterweise ohne "" um de...)


    1.2 HiDPI

    Als nächstes habe ich mir die Namen meiner Grafikkrtenausgänge besorgt:


    Am Terminal:

    Code
    swaymsg -t get_outputs

    Mein HiDPI-Monitor ist an DP-1.


    unter der bekannten ~/.config/sway/config hab ich unter der Wallpaper-Zeile bzw. Example configuration dann


    Code
     output "DP-1" scale 1.3

    eingetragen. Ich bin kein Fan von zu winzigen Terminal-Ausgaben...





    2. Kitty

    2.1: Kitty über zypper installieren:

    Code
    sudo zypper in kitty



    2.2: Kitty als Default-Terminal einrichten:

    ~/.config/sway/config bearbeiten, Zeile 17 bearbeiten zu:


    Code
    set $term kitty

    (statt alacritty+Parameter)

    (evtl. swaymsg reload im Terminal eingeben)

    [Meta=Win]+Enter sollte nun immer kitty öffnen.


    2.3 Kitty konfigurieren:

    ~/.config/kitty/kitty.conf bearbeiten


    unter den font family-Block hab ich

    Code
    font_size 13.0

    eingefügt.


    Und unter color scheme die Transparenz des Fensters auf 0.8 geändert:

    Code
     background_opacity 0.8

    Cool.


    (Jetzt ist alacritty eigentlich überflüssig. Da es Teil des installierten openSUSEway-Schemas ist, lässt es sich allerdings nicht so leicht entfernen. Mit einer Deinstallation des Schemas würde man wahrscheinlich auch andere wesentliche Dinge verlieren...


    3. fuzzel als Application Launcher

    3.1: fuzzel installieren:

    Code
    sudo zypper in fuzzel


    3.2: fuzzel bei Sway als Standard-Launcher eintragen:


    ~/.config/sway/config bearbeiten, Zeile 22:

    Code
    set $menu fuzzel

    (evtl. swaymsg reload im Terminal eingeben)

    [WIN=META]+D sollte dann das fuzzel-Menü anzeigen


    3.3 fuzzel auf openSUSEway optisch anpassen:

    eine Textdatei ~/.config/fuzzel/fuzzel.ini anlegen


    Meine Variante:

    Code
    [colors]
    background=0d1b1eff
    text=edf6f9ff
    match=52b788ff
    selection=1e6865ff
    selection-text=edf6f9ff
    border=00a489ff

    (Einfach so als quasi-vollständige Textdatei in die fuzzel.ini einfügen)


    Damit hat man dann schonmal die Basis. :)


    Ich habe dann noch die zsh mit ohmyzsh, autojump (statt z), powerlevel10k, zsh-autosuggestions und zsh-syntax-highlighting installiert.

    Sieht insgesamt so aus mit zwei Monitoren:

    2 Mal editiert, zuletzt von Spaceloop ()

    Für den Inhalt des Beitrages 328096 haftet ausdrücklich der jeweilige Autor: Spaceloop