Ich habe versucht herauszufinden, wie man die Position / Koordinaten eines geteilten Fensters in einem vim-Editor-Fenster erhält, aber bisher kein Glück.
Sagen Sie zum Beispiel, ich habe dieses Layout
%Vor%Ich möchte die Koordinaten der verschiedenen Splits meines Vim Window erhalten, ist das möglich?
Ich habe meine Hausaufgaben gemacht und googelte dies, ging auch durch die vim :help
/ :helpgrep
Dinge, die ich versucht habe, würden nicht funktionieren:
getwinposx()
/ getwinposy()
: Sie funktionieren nicht am Terminal, und sie geben nicht die gewünschte Information zurück, sondern geben nur die Position des Host-Betriebssystemfensters zurück.
:winpos
: Derselbe Grund wie der vorherige Punkt.
Ich kenne keine Funktion, die das tut, aber hier sind einige Fakten:
winwidth(wnr)
und winheight(wnr)
erhalten werden. winnr('$')
erreicht werden. 0<wnr≤winnr('$')
, dann Fenster mit der Nummer wnr
existiert. &columns
und Gesamthöhe ist &lines
. Um das Fensterlayout zu bekommen, fehlt Ihnen hier nur eine Tatsache: Wie Fenster nummeriert sind. Ich kann das jetzt nicht in der Hilfe finden.
gibt an, dass Fenster von oben links nach unten rechts nummeriert sind. Es ist jedoch nicht genug, um zu bestimmen, wie Windows nummeriert wird, nachdem die folgenden Befehle ausgeführt wurden:
%Vor% Es scheint also so, als ob das Bestimmen des aktuellen Fensterlayouts nicht möglich ist, ohne Fensterbewegungsbefehle zu verwenden ( wincmd h/j/k/l
).
Vor einiger Zeit wurde eine zusätzliche Variante eingeführt: pyeval(printf('(lambda win: [win.col, win.row])(vim.windows[%s - 1])', winnr))
(auch py3eval(…)
) liefert die genaue Position der oberen linken Ecke des Fensters winnr
. Benötigt Vim kompiliert mit +python[/dyn]
oder +python3[/dyn]
und Python selbst.
Tags und Links vim