Vim-Mastery: Absatzweise

vom 5. September 2009

Um effektiv mit längeren Texten zu arbeiten, gibt es einige Tastenkürzel, mit denen man sich schnell im Text bewegen kann. Dies eignet sich besonders für LaTeX-Dokumente, aber auch Sourcecode. Aber auch die Struktur des Textes sollte überlegt sein.

Zuerst einmal sollte man sich überlegen, ob man Zeilenumbrüche innerhalb von Absätzen macht, oder ob jede Zeile ein Absatz darstellt und man den Umbruch dynamisch vom Editor machen lässt. Zeilenumbrüche in einem Absatz haben mehrere Vorteile: Die Navigation durch den Text gestaltet sich viel einfacher, da man jede Zeile mit hjkl erreichen kann und auch das Markieren funktioniert viel besser. Allerdings wird das nachträgliche Editieren etwas unschön, da man hier ständig neu Umbrechen muss.

Um sich das Leben etwas zu vereinfachen, gibt es für beide Varianten eine nützliche Option.

set linebreak
set textwidth=80

Die erste Option bricht das Wort nicht mitten im Wort um sondern an Wortgrenzen, so wie man das auch aus Office-Programmen oder einem Textarea-Feld im Browser her kennt. Die zweite Option stellt die Umbruchgrenze auf 80 Zeichen und bricht die Worte an dieser Stelle um und fügt einen Zeilenumbruch ein.

Schreibt man nun ein paar Absätze und ändert dann an ein paar Stellen etwas um, muss man den Textblock neu einrücken. Hierzu gibt es in Vim natürlich auch einen Befehl.

Zuerst selektiert man den Textbereich und drückt dann "gq". Je nach dem wie die Option textwidth eingestellt ist, wird der Text neu formatiert.

Nun aber zu den Shortcuts zur Navigation im Text (Normal Mode): Was vermutlich schon bekannt ist, sind "w" und "b" um wortweise vor oder zurückzuspringen. Mit "(" und ")" kann man von Satz zu Satz springen, mit "{" und "}" über ganze Absätze hinweg. Mit "G" springt man zum Ende des Dokuments, mit "gg" an den Anfang.

Die meisten Befehle funktionieren auf ähnliche Weise mit Sourcecode. Mit "(" und ")" kann man von Funktion zu Funktion springen, w, b, G und gg arbeiten analog.

Notiz auf dem CheatSheet:

  • w,b|(, )|{, } = Wortweise|Satzweise|Absatzweise springen
  • gq = Selektierten Absatz neu formatieren

delicious bookmark del.icio.us,


Kommentare


nougad am 5. September 2009
ah gq kannte ich noch gar nicht. Ich hatte das bisher immer mit ":!fmt -100" gelöst.

Ich bekomme schon ein ganz schlechtes Gewissen. Ich muss auch endlich mal was besteuern ;-)

ishi am 17. October 2009
Ich hab was gefunden:

"Make cursor move as expected with wrapped lines:
set linebreak
inoremap gj
inoremap gk

Mit dieser Option kann man im Einfügemodus ganz normal innerhalb umbrochener Zeilen mit den Tasten und navigieren.

ishi am 17. October 2009
Bitte um Entschuldigung, mein Post ist irgendwie falsch rübergekommen -- ganze Teile vom Code sind verschwunden!

"Make cursor move as expected with wrapped lines:
inoremap "weniger"Down"mehr" "weniger"C-o"mehr"gj
inoremap "weniger"Up"mehr" "weniger"C-o"mehr"gk

Aaron am 17. October 2009
Gute Idee mit dem Mapping. Allerdings muss man dann mit den Cursortasten durch den Text navigieren, hjkl geht da leider immer noch nicht, was auch verständlich ist.

Kommentar schreiben