Vim unter Microsoft-Subsystem für Linux

Idefixx

Well-Known Member
Da ich mir nicht sicher bin, ob dies unter den Vim-Thread von midnight paßt, mache ich einen neuen auf.
Um auch unter Linux mal wieder ein bissel in C zu programmieren, als Abwechslung und Hobby, habe ich gestern mal statt der VBox das Windows-Subsystem für Linux installiert (WSL 1) - falls jemand Interesse daran hat, auch in Bezug auf BSD, bitte fragen, denn hier geht es jetzt erstmal um Vim und seine Konfiguration.

Ich habe mich in dem erwähnten Thread über die .vimrc gewundert, so etwas habe ich noch nicht gesehen. Ist das BSD spezifisch? Auch die erwähnten Probleme kann ich jetzt nicht nachvollziehen. Grundsätzlich läuft es mit der Konfiguration, jedenfalls unter Linux, so (Textbearbeitung mit dem vi, O´Reilly):
Im Homeverzeichnis des Nutzers liegen eine .vimrc und eine .exrc. In der .vimrc werden die Grundeinstellungen vorgenommen, und in der .exrc liegen noch mal spezielle Anweisungen, können liegen. Jetzt kommt das Entscheidende, was mich beim Vim-Thread irritiert hat, man kann in jedem Arbeitsverzeichnis eine speziell auf die jeweilige Programmiersprache abgestimmte .exrc erstellen, und diese benutzt Vim dann.

Der Vorgang ist so: Vim liest zuerst die .vimrc im Homeverzeichnis, wenn dort die exrc-Option (Vorraussetzung) gesetzt ist, liest er die .exrc im aktuellen Verzeichnis. Also, wenn ich mich jetzt (mein Aufbau) in ~/lab/c befinde, und dort Vim aufrufe, liest er erst die .vimrc und dann die .exrc in diesem Arbeitsverzeichnis. Das bedeutet in der Praxis, ich kann für jedes Arbeitsverzeichnis, C, Perl, Java, Cobol, xyz, eine ganz spezielle .exrc erstellen.

Meine .vimrc und die .exrc in /lab/c, und das Ergebnis anhand eines Programms zum Testen, als Screenshots:
 

Anhänge

  • wsl_vimrc_2020-05-27_144439.jpg
    wsl_vimrc_2020-05-27_144439.jpg
    41,7 KB · Aufrufe: 269
  • wsl_exrc_2020-05-27_144651.jpg
    wsl_exrc_2020-05-27_144651.jpg
    25,8 KB · Aufrufe: 267
  • Ergebnis_2020-05-27_144833.jpg
    Ergebnis_2020-05-27_144833.jpg
    40 KB · Aufrufe: 239
Für welches Linux hast du dich denn entschieden? Standard ist ja glaub ich Ubuntu, aber man kann ja auch Debian e.t.c. auswählen.

LG - Zed

/edit habs gerade gesehen auf den Screenshots, Sorry!
 
Zuletzt bearbeitet:
Vielleicht noch etwas erweitert: Wenn in der globalen Konfiguration (unter unixoiden Systemen also ~/.vim/vimrc oder oldschool ~/.vimrc) die Option set exrc gesetzt ist, liest Vim beim Start nach allen anderen Konfigurationsdateien die .vimrc oder (wieder oldschool) .exrc im Arbeitsverzeichnis. Darüber kann man schöne Dinge machen, ich setze so zum Beispiel angepasste Wörterbücher für die Rechtschreibprüfung. Das kann allerdings auch ein bedeutendes Sicherheitsrisiko sein. Aus dem Grund sollte man als letzte Option in der globalen Konfiguration ein set secure setzen. Das schränkt etwas ein, was in aus dem Arbeitsverzeichnis gelesenen Konfigurationsdateien möglich ist.

Und weil ich auf meine Vim-Config etwas stolz bin, nochmal einen Link darauf: https://github.com/Yamagi/vimrc ;)
 
Ich habe mich in dem erwähnten Thread über die .vimrc gewundert, so etwas habe ich noch nicht gesehen. Ist das BSD spezifisch?

Du meinst die Abkuerzungen?

Schau mal hier:

http://vimdoc.sourceforge.net/htmldoc/options.html

"nocp" ist z.B. die Abkuerzung von "nocompatible" oder "bs=2" ist die Abkuerzung von "backspace=indent,eol,start" usw. Ich mag kompakte configs, auch wenn diese auf den ersten Blick lesetechnisch etwas gewoehnungsbeduerftig sind.

Meine .vimrc sieht inzwischen schon etwas anders aus und laesst sich gut nutzen:
Code:
silent !mkdir -p ~/.vim/{bak,swp,undo}
set bdir=~/.vim/bak// dir=~/.vim/swp// udir=~/.vim//undo
set bs=2 ft=off hid ic is ls=2 mls=5 nocp nofen nohls nosol pt=<C-p> ru so=10
set sw=4 sc sm smd scs t_Co=256 ts=4 tm=0 wim=longest,list,full

sy on
colo lucius
:LuciusDark

filetype plugin indent on

au FileType * setl cc=0
au FileType asm,c,cpp,go,javascript,html,make,perl,php setl tw=79 ai cc=81
au FileType asm,c,cpp,make setl ts=8 sw=8
au BufNewFile,BufReadPost *.ex,*.exs,*.elm setl ts=2 sw=2 sts=2 et

Und weil ich auf meine Vim-Config etwas stolz bin, nochmal einen Link darauf: https://github.com/Yamagi/vimrc

Deine config dient mir schon laenger als Inspirationsquelle und dort habe ich das mit den directories unter ~/.vim abgeguckt. Ausserdem nutze ich seitdem auch die lucius colors. ;-)
 
Um auch unter Linux mal wieder ein bissel in C zu programmieren, als Abwechslung und Hobby, habe ich gestern mal statt der VBox das Windows-Subsystem für Linux installiert (WSL 1) - falls jemand Interesse daran hat, auch in Bezug auf BSD, bitte fragen, denn hier geht es jetzt erstmal um Vim und seine Konfiguration.

Etwas off-topic: ich kann WSL 2 wärmstens empfehlen, dessen Verteilung mit Windows 10 Version 2004 heute startet.

Ich habe mich in dem erwähnten Thread über die .vimrc gewundert, so etwas habe ich noch nicht gesehen. Ist das BSD spezifisch?

Die BSDs liefern out of the box einen alten vi-Abkömmling mit, nvi - der Thread geht aber schon um vim. Die angesprochenen Sachen sind nicht BSD-spezifisch.

Das bedeutet in der Praxis, ich kann für jedes Arbeitsverzeichnis, C, Perl, Java, Cobol, xyz, eine ganz spezielle .exrc erstellen.

Ich hatte es auch so gemacht, nutze aber inzwischen EditorConfig. Das hat den großen Vorteil, mit so ziemlich jedem Texteditor bzw. jeder Entwicklungsumgebung auf Erden zu funktionieren. So zerschießt man sich nicht die Formatierung, auch wenn man z.B. Visual Studio Code oder $INSERT_YOUR_FAVORITE_EDITOR_OR_IDE verwendet.

Gerade bei Open-Source-Projekten ist EditorConfig inzwischen der De-facto-Standard, um niemanden die Verwendung eines bestimmten Editors aufzuzwingen.
 
Und weil ich auf meine Vim-Config etwas stolz bin, nochmal einen Link darauf: https://github.com/Yamagi/vimrc;)

Das sind ja interessante Sachen die da rumliegen. Mit colors und vimrc muß ich mich erst noch beschäftigen, mit der Bash habe ich unter Linux nur mal früher rudimentär rumprobiert, dagegen hat es mir die Beschreibung unter vimrc-full full angetan; etliche Anweisungen die nicht im Handbuch stehen. Sehr gut die Erklärungen dazu, daß muß ich noch nachholen Werde ich jetzt gleich mal einiges durchprobieren, bis auf eine Sache: relativnumbers. Hier kann man das schön sehen:
Vim’s absolute, relative and hybrid line numbers :confused:

Ne Danke, da flimmert es mir vor den Augen! Was mir nicht ganz klar ist sind set all& und highlight clear. Was passiert steht da, aber welchen praktischen Sinn hat das? So etwas wie "tabula rasa", und dann alles neu setzen, damit nichts dazwischen pfuschen kann?


Azazyel schrieb:
Etwas off-topic: ich kann WSL 2 wärmstens empfehlen, dessen Verteilung mit Windows 10 Version 2004 heute startet.
Wenn es heute startet ist es gut, bisher galt:
"Derzeit müssen Sie zum Aktualisieren auf Windows 10, Version 2004 (Build 19041), dem Windows Insider-Programm beitreten und den Ring „Release Preview“ auswählen. Das öffentliche Release sollte Ende Mai verfügbar sein."

Ich warte bis mein System aktualisiert wurde, und mache dann ein Update auf WSL 2.
 

Relative numbers sind eigentlich eine feine Sache. Stell dir vor, du willst einen Codeblock loeschen. Dann zaehlst du die Anzahl der zu loeschenden Zeilen und drueckst z.B. "7dd". Bei den relative numbers kannst du dir das haendische Zaehlen sparen, da die Zeilen relativ zu deiner Curserposition angezeigt werden. Bei Hybrid wird die Cursorposition nicht als 0 (null), sondern als tatsaechliche Zeilennummer angezeigt.
 
Relative numbers sind eigentlich eine feine Sache. Stell dir vor, du willst einen Codeblock loeschen. Dann zaehlst du die Anzahl der zu loeschenden Zeilen und drueckst z.B. "7dd". Bei den relative numbers kannst du dir das haendische Zaehlen sparen, da die Zeilen relativ zu deiner Curserposition angezeigt werden. Bei Hybrid wird die Cursorposition nicht als 0 (null), sondern als tatsaechliche Zeilennummer angezeigt.
Danke für die Erklärung, aber für mich ist das nix. Vielleicht bin ich da zu konservativ eingestellt, oder wie immer man das nennen will.
 
Was mir nicht ganz klar ist sind set all& und highlight clear. Was passiert steht da, aber welchen praktischen Sinn hat das? So etwas wie "tabula rasa", und dann alles neu setzen, damit nichts dazwischen pfuschen kann?

Genau das. set all& setzte alle Options auf Standardeinstellung zurück und highlight clear wirft alle bereits definierten Highlight-Regeln raus. Das dient vor allem dazu Müll aus globalen Configs loszuwerden, die man auf einigen Systemen hat. An der eigenen Kiste ist das natürlich kein Problem, aber in einem Account auf einem fremden System kann es eines sein. Es erspart auch Überraschungen, wenn der Paketmaintainer meint plötzlich eine globale Config reinzuwerfen.

Nachtrag: Das wohl größte Problem an Vim ist, dass das Programm nach über 30 Jahren Entwicklung unendlich komplex geworden ist. Vim ist genauso wie zum Beispiel Microsoft Word, es kann buchstäblich alles und noch eine ganze Menge mehr, aber niemand benutzt mehr als seine individuellen 5 Prozent der Funktionen. Das macht es sehr unübersichtlich. Zwar dokumentiert das interne Hilfssystem alles, aber einen Einstieg zu finden ist schwer und viele Dinge erschließen sich alleine über die Hilfe auch nicht. Und es kommen immer noch neue Funktionen hinzu... Meine Config ist über Jahre gewachsen, vieles davon habe ich irgendwo mal in Büchern, im Netz und in anderen Configs aufgeschnappt. Nur ein kleiner Teil ist aus dem Hilfssystem erarbeitet.
 
Zuletzt bearbeitet:
Genau das. set all& setzte alle Options auf Standardeinstellung zurück und highlight clear wirft alle bereits definierten Highlight-Regeln raus. . . . An der eigenen Kiste ist das natürlich kein Problem, . . .
Danke, für die Bestätigung bezüglich der "eigenen Kiste". Gut das ich nie ein Admin war, oder bin.

Mal sehen, was mir hinsichtlich dieses Threads für ein Song für den Music-Thread einfällt. :p
 
. . .
Nachtrag: Das wohl größte Problem an Vim ist, dass das Programm nach über 30 Jahren Entwicklung unendlich komplex geworden ist. Vim ist genauso wie zum Beispiel Microsoft Word, es kann buchstäblich alles und noch eine ganze Menge mehr, aber niemand benutzt mehr als seine individuellen 5 Prozent der Funktionen.
Da hast Du verdammt recht! Im Moment muß ich wieder Word XP beim Schreiben nutzen, aber ich werde mir wieder MS Office 2019 anschaffen, ist einfach besser. Zum Beispiel merkt sich Word 2019 den Punkt, wo man zuletzt geschrieben hat. Bei einem Manuskript von 634 Seiten ist das wirklich eine Hilfe. Nur ein Punkt!
Aber dieses Word kann heute so viel unendlich mehr . . . ich habe das Handbuch von Word 2013, rund 850 Seiten, und das zeigt garantiert nicht alle Möglichkeiten auf die man hatte und hat. Man kann es auch für Word 2019 verwenden, geht schon.

Na ja, so ist die Entwicklung. Ist wie die Evolution, die kennt auch keinen Stillstand.
 
Hand hoch, wer mehrfach in den letzten 20 Jahren versucht hat, sich (auch, zusätzlich) mit Emacs vertraut zu machen, dann aber doch wieder immer zu vi(m) zurückgekommen ist....
Ich habe es nur einmal versucht, unter einer Suse 7.x - aber nicht lange.

Zu Vim, ich habe die .vimrc inzwischen an die Empfehlungen von Yamagis Beispiele angepaßt - für mich als einzigen Nutzer. Vielleicht gibt es ja dem ein oder einen anderen eine Anregung:
 

Anhänge

  • vimrc-Korrigiert-WSL.jpg
    vimrc-Korrigiert-WSL.jpg
    77,8 KB · Aufrufe: 236
Ach ja, und hier noch ein halbwegs praktisches Progrämmchen unter Vim: Es berechnet den Kapitalwert, man könnte auch sagen Sparwert.
Als Beispiel: Eine Familie zahlt nach Geburt ihres Kindes jedes Jahr 1200.00 Euro auf ein Sparkonto ein. Verzinsung 5,7 % (Ha, Ha, Ha,), auf 21 Jahre.
 

Anhänge

  • Kapitalwert-Code2020-05-30_004354.jpg
    Kapitalwert-Code2020-05-30_004354.jpg
    166,5 KB · Aufrufe: 226
  • Kapitalwert-Ergebnis.jpg
    Kapitalwert-Ergebnis.jpg
    46,6 KB · Aufrufe: 211
Ach ja, und hier noch ein halbwegs praktisches Progrämmchen unter Vim: Es berechnet den Kapitalwert, man könnte auch sagen Sparwert.
Als Beispiel: Eine Familie zahlt nach Geburt ihres Kindes jedes Jahr 1200.00 Euro auf ein Sparkonto ein. Verzinsung 5,7 % (Ha, Ha, Ha,), auf 21 Jahre.
Du musst noch die zu erwartende Inflation raus rechnen damit Du den Realwert in heutigen Euro bekommst.
 
kamikaze schrieb:
Du musst noch die zu erwartende Inflation raus rechnen damit Du den Realwert in heutigen Euro bekommst.
Etwas raus rechnen dessen Höhe man noch gar nicht kennt? :confused:

Beim Programmcode fehlt der Rest:
 

Anhänge

  • Kapitalwert-Coderest2020-05-30_161047.jpg
    Kapitalwert-Coderest2020-05-30_161047.jpg
    36,6 KB · Aufrufe: 215
Bezüglich der Farbdarstellung in Vim unter WSL ist mir da noch etwas eingefallen was erwähnt werden sollte. Die Farbdarstellung klappte auf Anhieb, wie von früher und der VBox gewohnt, wenn ich mit Vim etwa die vimrc aufrief, aber im C-Quelltext klappte es einfach nicht. Ich fand dann in einem Forum die Lösung: sudo zypper install vim-data
Vim Syntax Highlighting does not work

Offenbar wird da unter WSL, zumindest bei Suse, nicht alles das installiert, wie es sonst üblich ist. Erst nach der obigen Installation von "vim-data" funktionierte es.
 
Jetzt muß ich auch etwas fragen, wenn es auch nicht wirklich hier hin gehört: Wie kann ich unter WSL1 den GCC auf die neuste Version bringen?

Ich habe bisher alles versucht was mir mit Hilfe des Internet einfiel, aber es funktioniert nicht. Weiß vielleicht hier jemand wie man einen GCC unter Suse auf den neusten Stand aktualisiert?

Meine jetzige Version:
 

Anhänge

  • GCC-Version_2020-06-02_230548.jpg
    GCC-Version_2020-06-02_230548.jpg
    30,8 KB · Aufrufe: 208
Danke für den Hinweis! Auf der Seite lande ich dann aber bei einer anderen Seite mit Anmeldung, wenn ich auf Download klicke.
Ansonsten habe ich noch alles versucht was ich im Netz fand, und/oder mir einfiel, ohne positives Ergebnis. Unter Win dauert so etwas zehn Minuten: MinGW für Windows - auspacken, ins Verzeichnis schieben (Pfad bleibt immer gleich), fertig.

Mein System wurde heute auf den neusten Stand gebracht, anschließend habe ich ein Update auf WSL 2 durchgeführt. Da gab es keine Probleme.

Beispiel für einen Versuch mit rpm um den GCC 10.1 zu installieren:
 

Anhänge

  • GCC-Fehler2_2020-06-03_173023.jpg
    GCC-Fehler2_2020-06-03_173023.jpg
    282,7 KB · Aufrufe: 201
Hmmm bei WSL ist - soweit ich das gesehen habe - die pakete recht identisch zum jew. Standardlinux, allerdings wird nur nen recht schmale Auswahl installiert.

https://docs.microsoft.com/de-de/windows/wsl/install-win10

Hier ist ja glaub ich die Auswahl. Ich selbst nutze Debian unter WSL, da ist buster momentan ausgeliefert, auch ohne den gcc-10. Soweit ich das sehe ist das noch ein recht frisches release?

Dann werden die Linux-Distries die halbwegs "Stabil" sind da wohl noch eine ganze Zeit brauchen bis die drinne sind.

Auf nem Debian Testing ist gcc-10 in den ofiziellen Paketquellen, ich glaube ich hab nen WSL schonmal auf Testing gewechselt, wenn du unbedingt gcc-10 brauchst ja villeicht ne Option?

/edit unter dem auch verfügbaren alpine ist wohl irgend ne 9er verfügbar? https://pkgs.alpinelinux.org/package/edge/main/x86/gcc

Vill. nen genereller Tip, Suse ist für "Neuere Software" oder "breite Softwareauswahl" oder auch nur "nachvollziehbar zusammengestellte Repros" eher nicht die richtige distro, auch wenn sie durchaus auch ihre vorteile hat :)
 
Bei SUSE gibts halt den LEAP Zweig mit sehr konservativen Versionen der sich an SLES orientiert und OpenSUSE wo du immer das neueste bekommst.
 
Mir ist schließlich Yast eingefallen, etwas spät. Die Installation klappte auch, siehe Screenshot, aber nach wie vor wird der GCC 7.4 angezeigt. Eben nochmal versucht, sogar den Siebener gelöscht, dachte ich, und die Installation des GCC 10.1 nochmal bestätigt - nix. Das es gar nicht gehen soll ist unwahrscheinlich. Ich habe aber auch nichts im Netz gefunden das mir weiterhelfen würde.

Unbedingt nötig ist der GCC 10.1 nicht, ist ja nur ein Hobby, aber es wurmt mich, daß es nicht klappen will. In der VBox gab es mit so etwas nie Probleme.
 

Anhänge

  • GCC+Yast_2020-06-03_223408.jpg
    GCC+Yast_2020-06-03_223408.jpg
    98,5 KB · Aufrufe: 186
Zurück
Oben