Serie: Ablenkungsfreies Schreiben - Vim und Goyo

Mo, 17. April 2023, Fabian Schaar

Ablenkungsfreie Editoren erfreuen sich insbesondere im Markdown-Umfeld einer großen Beliebtheit. Manchmal braucht es nicht die vielen Knöpfe, die Anwendungen wie LibreOffice bieten können, manchmal möchte man sich einfach “konzentrieren” auf den eigenen Text. Doch um ein ablenkungsfreies Schreiberlebnis zu erhalten, braucht es nicht immer dedizierte Anwendungen. Mit entsprechenden Plugins kann auch der Allzweck-Editor Vim in eine angenehme Schreibumgebung für lange Texte verwandelt werden.

Viele nennen Vim einen Editoren für Programmierer. Das hat natürlich auch seine Berechtigung und der Ruf kommt nicht von irgendwo: So, wie es “aus der Tüte fällt” kann Vim erst einmal abschrecken. Vor allem die nicht umgebrochenen Zeilen, die auch noch die gesamte Bildschirmbreite einnehmen, passen nicht ganz zu langen, kreativen Texten. Bei Quellcode und Config-Dateien fällt das nicht auf, ist im Gegenteil sogar ganz praktisch. Aber wer schon einmal versucht hat, ohne einen Zeilenumbruch Blogartikel oder ähnliches zu schreiben, der wird das Problem sicher kennen.

Ich halte Vim auch als Nicht-Programmierer für einen wunderbaren Editoren, der sich für alle möglichen Anwendungszwecke eignet - oder eben “eignen lässt”. In diesem Artikel beschreibe ich, wie ich Vim zu meiner ablenkungsfreien Schreibumgebung konfiguriere.

1.: wrap-Option setzen

Mit der Zeile set wrap in der eigenen ~/.vimrc bricht Vim Zeilen optisch um, ohne neue Zeilen anzulegen. Dadurch bleiben die eigentlichen Zeilen erhalten, was besonders bei Auszeichnungssprachen wie Markdown entscheidend ist. Sonst geht nämlich die Absatzstruktur des Textes flöten.

2.: linebreak-Option setzen

Mit der Option 'wrap' bricht Vim Zeilen (entsprechend der Fenstergröße) optisch um. Dabei nimmt der Editor aber nicht darauf Rücksicht, wo er umbricht. Mit der Zeile 'set linebreak' in der .vimrc kann das verhindert werden: Dann bricht Vim nur noch an ganzen Wörtern um.

3.: Markdown und Syntax-Hervorhebungen

Meine allerliebste Auszeichnungssprache ist Markdown, und ich versuche mittlerweile, diese so oft wie möglich zu nutzen. Für mich verbindet Markdown die Vorzüge von Plain-Text mit einigen nützlichen Formatierungsoptionen. Ich setze Markdown ziemlich universell ein, und konnte damit meine LibreOffice-Nutzung deutlich zurückfahren. Nicht, dass LibreOffice ein schlechtes Programm wäre, aber mit Markdown schreibe ich einfach eleganter. Um Markdown besser in Vim zu integrieren, nutze ich folgende Optionen:

Mit 'syntax on' wird grundlegend die Syntax-Hervorhebung in Vim aktiviert. Dann kann der Editor entsprechend der Programmier- oder Auszeichnungssprache besondere Textelemente visuell hervorheben. Bei Markdown werden so zum Beispiel die Hashtags für Überschriften eingefärbt. Wenn das Terminal eine entsprechende Unterstützung mitbringt, kann auch fetter bzw. kursiver Text entsprechend dargestellt werden. Das sind nur ein paar Beispiele, ich denke, das Prinzip ist klar geworden.

So lange nur 'syntax on' in der .vimrc steht, muss Vim erst den Dateityp auslesen, um Syntax-Hervorhebungen darstellen zu können. Ich habe daher noch 'filetype=markdown' in meine .vimrc geschrieben, um Vim auch vor dem Speichern Markdown zu signalisieren. Das mag vielleicht ein bisschen bizarr klingen, funktioniert aber erstaunlich gut: Wenn eine andere Textdatei geöffnet wird, ließt Vim den entsprechenden Dateitypen automatisch aus. Wenn eine neue Datei geöffnet wird, geht Vim ersteinmal von Markdown aus. Und wenn eine Markdown-Datei geöffnet wird, wird so oder so die Markdown-Syntax hervorgehoben. Zumindest scheint das so zu funktionieren. Ich hoffe, dass ich das alles richtig verstanden habe, vielleicht können mich ja die Vim-Profis noch ein bisschen weiterbilden.

Goyo-Plugin

Die bisherigen Schritte waren eigentlich nur so ein bisschen Vorarbeit. Die eigentliche Problemstellung, die ich am Anfang angesprochen hatte, ist ja noch nicht gelöst. Wer den hier beschriebenen Schritten folgt, erhält bis jetzt ein Vim, dass ein kleines bisschen mehr auf Markdown steht und Zeilen an den Wortenden umbricht, so wie die Fenstergröße das bestimmt.

Mit einem Vim-Plugin kann man in Vim aber eine tatsächlich ablenkungsfreie Schreibumgebung erreichen: Vor kurzem bin ich auf “Goyo” gestoßen. Dieses Plugin blendet Zusatzinformationen wie etwa Zeilennummern konsequent aus und rückt den Text in die Mitte des Editoren-Fensters. Das funktioniert besonders im Vollbild-Modus hervorragend.

Goyo lässt sich sehr einfach installieren. Dazu sollte zunächst ein Plugin-Manager eingerichtet werden. Ich verwende als Debian-Nutzer zum Beispiel “Pathogen”. Dieses Programm kann einfach aus den offiziellen Paketquellen installiert werden:

sudo apt install vim-pathogen

Entsprechend des GitHub-READMEs bin ich zur Einrichtung dann so vorgegangen:

mkdir -p ~/.vim/bundle

So wird zunächst das “bundle”-Verzeichnis im Heimverzeichnis-Unterordner “.vim” angelegt. Dann muss man Vim auch noch mitteilen, dass Pathogen genutzt werden soll. Dazu trägt man die Zeile 'execute pathogen#infect()' in die .vimrc-Datei ein.

Da das eigentliche Programm ja bereits aus den Paketquellen installiert wurde, ist die Einrichtung unter Debian damit auch schon abgeschlossen. Solltet ihr andere Distributionen verwenden, kann die Vorgehensweise natürlich abweichen. Im Zweifel könnt ihr euch auch an die Anleitungen im oben verlinkten GitHub-Repo halten.

Nachdem Pathogen eingerichtet ist, können Vim-Erweiterungen nun sehr einfach installiert werden. Dazu müssen diese nur mit git in das “bundle”-Verzeichnis geklont werden. Unter Debian muss git erst installiert werden:

sudo apt install git

So habe ich in diesem Fall das GitHub-Repo https://github.com/junegunn/goyo.vim geklont. Dabei sollte noch ein .git angehangen werden:

cd ~/.vim/bundle && git clone https://github.com/junegunn/goyo.vim.git

Das war es auch schon, Goyo ist bereits nach dem nächsten Start von Vim installiert und einsatzbereit. Vim startet dann im “normalen” Anzeige-Modus, dieses Verhalten behalte ich auch so bei. Wenn ich dann in meine ablenkungsfreie Schreibumgebung wechseln möchte, muss ich nur ':Goyo' eingeben. Schon ist der Text mittig dargestellt, und das Schreiben kann losgehen. Mit ':Goyo' kann man die Plugin-Ansicht auch wieder verlassen,':Goyo!' schaltet das Plugin aus.

Passend zu Goyo bietet es sich auch an, in ein Vollbild-Terminal zu wechseln. Ich mag es auch, dann noch die Schriftgröße zu erhöhen, um die Lesbarkeit für mich zu verbessern. Das Plugin bietet auch einige Konfigurationsoptionen, die auf GitHub genauer nachgelesen werden können.

Wer dieser kleinen Anleitung folgt, erhält im wesentlichen eine Schreibumgebung, wie ich sie auch für das Beitragsbild in einem Screenshot festgehalten habe. Manche bevorzugen es wohl, wenn nicht fokussierte Zeilen noch zusätzlich leicht gedimmt werden. Das kann mit dem Plugin "Limelight" erreicht werden. Ich finde diesen Effekt aber störend und verzichte dankend darauf.

Quellen:

Bild:

  • Screenshot meiner Schreibumgebung (Vim + Goyo)

Tags

Vim, markdown, Markdown-Editor, Goyo