winheight()
und winwidth()
geben Sie die Anzahl der Spalten / Zeilen im aktuellen Fenster zurück. Was ich suche, ist etwas näher an der tatsächlichen Höhe und Breite des Bearbeitungsbereichs oder des angezeigten Bereichs, wenn er in einem Terminal ausgeführt wird. Das Problem mit winheight()
und winwidth()
ist, dass das aus diesen Werten berechnete Seitenverhältnis nicht mit dem tatsächlichen Seitenverhältnis übereinstimmt.
:echo winwidth('%') winheight('%') winwidth('%') * 1.0 / winheight('%')
104 51 2.039216
Ein Screenshot des Pufferbereichs hat eine Größe von 936 x 918 Pixel und ein angezeigtes Seitenverhältnis von 1.019608
. Ich denke, ich kann den tatsächlichen Wert anhand der Schriftgröße ermitteln, aber wie?
Dies ist eine Fortsetzung von Wie kann ich Vim open dazu bringen, in einem vertikalen Split zu helfen? . Ich versuche, die Lösung von Nobe4 anzupassen .
cnoreabbrev h <C-r>=(&columns >= 160 && getcmdtype() ==# ':' && getcmdpos() == 1 ? 'vertical botright help' : 'h')<CR>
.==#
Operator wusste, der zur Aufklärung:h
beigetragen hat, den gesamten Freaking-Befehl verstanden habe. Macht mich das zu einem Vim-Experten? Muss so etwas sein. Müssen mehr raus.Antworten:
Ihre Berechnung ist verzerrt, da das Seitenverhältnis jeder Zelle vertikal ist.
Beispiel: In Terminal.app hat jede Terminalzelle mit einer Schriftgröße von 23 pt und einem Standardzeichenabstand eine Breite von 7 Pixel und eine Höhe von 15 Pixel für insgesamt 728 x 765 Pixel :
Sie können die Schriftgröße nicht in Vim abrufen, ohne externe Befehle aufzurufen oder mit dem Terminal zu kommunizieren, was sehr schwer werden kann. Offensichtlich ist dies in Gvim anders, dank
'guifont'
.Wenn Sie es schaffen, müssen Sie dennoch die Größe einer Zelle abziehen, die je nach Terminalprogramm variieren kann, wenn es keinen Standard gibt . Ich habe nur iTerm 2 überprüft, die zum Glück das gleiche Ergebnis haben.
Daher würde ich mich für eine statische Lösung entscheiden. Ich habe den Mindestbreite-Check auf dieses Snippet gepfropft, in das Sie Folgendes einfügen können
plugin/help.vim
:Wenn das Fenster groß genug ist, um 80 Spalten des aktuellen Puffers aufzunehmen, wird rechts ein schmaler Hilfesplit geöffnet, andernfalls wird der Split unten geöffnet. Sie können die Aufteilungsrichtung mit anpassen
:vertical
.quelle