Nächstes Suchergebnis in Vim automatisch zentrieren

Wer öffter mal mittels Vim in Logfiles unterwegs ist oder aber in einer großen Datei etwas sucht und hierbei einige Suchergebnisse erwartet dem ist sicherlich der Normal Command n bzw. N bekannt.

Mittels n springt man zum nächsten Suchergbenis und falls eingestellt, wird das Ergebnis auch in der Datei farblich hervorgehoben.

Gerade bei Logfiles kann einem das hin- und hergespringe in den Zeilen etwas nerven. Schöner wäre es, wenn das nächste Ergebnis einfach – wenn möglich – immer mittig im Fenster dargestellt wird.

Hierfür kann man nach n einfach den Befehl zz verwenden, welcher die Zeile mittig im Fenster anzeigt.

Da ich das aber nicht immer manuell machen möchte, es jedoch auch nicht als Standardverhalten mappen wollte, habe ich mir eine kurze Funktion geschrieben, welche ich in meine .vimrc eingebunden habe.

Gemappt habe ich mir das ganze auf „Leader nz“ was bei mir die Tastenkombination <space>nz ist.

Nachfolgend die recht kurze vimscript-Funktion:

let g:ncttoggle = 1
function! NextCenterToggle()
  if g:ncttoggle
    nmap n nzz
    nmap N Nzz
    let g:ncttoggle = 0
  else
    nun n
    nun N
    let g:ncttoggle = 1
  endif
endfunc

nnoremap <silent> <leader>nz :call NextCenterToggle()<CR>

Kurz und bündig mappe ich n und N im Normal Mode einfach um und wenn ich es wieder deaktivere lösche ich auch das Mapping um das Standardverhalten wieder herzustellen.