Vim: Springe zur ersten Zeile des vorherigen bzw. nächsten Absatzes im Dokument

Geschrieben von Eric Scheibler am 27.08.2012

Hier stelle ich drei Funktionen vor, mit denen der vorherige bzw. nächste Absatz in einem Textdokument angesprungen werden kann. Im Vim gibt es bereits ähnliche Funktionen: mit { springt man zum vorherigen, mit } zum nächsten Absatz. Diese Standardfunktionen springen allerdings immer auf die Leerzeilen zwischen den Absätzen, sodass der Screenreader nicht die erste Zeile des neuen Absatzes vorliest sondern nur “leer”, da ja in der Zeile nichts steht. Erst wenn man den Cursor eine Zeile weiter bewegt, bekommt man den Beginn des Absatzes vorgelesen.

Die hier vorgestellten Funktionen springen dagegen direkt zur ersten Zeile des neuen Absatzes und der Screenreader (Brltty unter Debian) liest den Zeileninhalt automatisch vor. Das ist besonders hilfreich, wenn man sich einen Überblick über ein Dokument verschaffen will.

Die Funktionen sind dabei allerdings nicht von einem Screenreader abhängig und funktionieren natürlich auch ohne. Ich mache mir hier nur zu Nutze, dass Brltty immer die aktuelle Zeile unter dem Cursor automatisch liest.

In der Datei paragraphs.vim werden die folgenden drei Funktionen implementiert:

  1. Springt zum vorherigen Absatz, überspringt dabei evtl. mehrfach auftretende Leerzeilen
  2. Springt zur ersten Zeile des aktuellen Absatzes
  3. Springt zum nächsten Absatz

Vim kennt zwei Orte für die Konfigurationsdateien: 1. Hauptkonfigurationsdatei = ~/.vimrc 2. Ordner für Plugins u.Ä. = ~/.vim/

Zunächst muss das Skript paragraphs.vim heruntergeladen und im Ordner ~/.vim/ abgelegt werden. Danach wird die Datei in die Hauptkonfiguration eingebunden:

vim ~/.vimrc
...
source /home/YOUR_USERNAME/.vim/paragraphs.vim

Schließlich müssen den eingebundenen Funktionen in der Main Config noch Tastenkombinationen zugewiesen werden. Ich habe gleich { und } genommen und damit die bisherigen Absatzsprungfunktionen überschrieben.

vim ~/.vimrc
...
" paragraph controls
" next paragraph
nmap <silent> } :call NextParagraph()<cr>
" prev paragraph
nmap <silent> { :call PrevParagraph()<cr>
" jump to the start of the current paragraph
nmap <silent> <leader>{ :call StartOfCurrentParagraph()<cr>

Der Leader Key ist ““. Ich habe den aber auf das Komma (”,“) umgelegt, da sich das erheblich leichter tippen lässt, nämlich schnell hintereinander”,{“, um zum Beginn des aktuellen Absatzes zu gelangen.

vim ~/.vimrc
...
" change leader key to ,
let mapleader=","