winheight()
i winwidth()
zwróć liczbę kolumn / linii w bieżącym oknie. To, czego szukam, to coś bliższego rzeczywistej wysokości i szerokości obszaru edycji lub obszaru wyświetlanego, jeśli jest uruchamiany w terminalu. Problemem winheight()
i winwidth()
że współczynnik kształtu obliczono z tych wartości jest w kontakcie z rzeczywistą proporcji.
:echo winwidth('%') winheight('%') winwidth('%') * 1.0 / winheight('%')
104 51 2.039216
Zrzut ekranu obszaru bufora ma wymiary 936 x 918 pikseli, co daje wyświetlany współczynnik kształtu wynoszący 1.019608
. Myślę, że mogę uzyskać rzeczywistą wartość, używając rozmiaru czcionki, ale jak?
To kontynuacja Jak mogę pomóc Vimowi w otwarciu w pionie? . Próbuję dostosować rozwiązanie Nobe4 .
cnoreabbrev h <C-r>=(&columns >= 160 && getcmdtype() ==# ':' && getcmdpos() == 1 ? 'vertical botright help' : 'h')<CR>
.==#
operatorze, który:h
pomógł mi wyjaśnić, tak naprawdę zrozumiałem całe to dziwne polecenie. Czy to czyni mnie ekspertem od Vima? Musi być coś takiego. Potrzebujesz więcej wyjść.Odpowiedzi:
Twoje obliczenia są wypaczone, ponieważ proporcje każdej komórki są pionowe.
Na przykład w Terminal.app, z czcionką 23pt i domyślnym odstępem między znakami, każda komórka terminalu ma szerokość 7px i wysokość 15px, co daje w sumie 728x765px :
Nie możesz pobrać rozmiaru czcionki z poziomu Vima bez wywoływania zewnętrznych poleceń lub sposobu komunikacji z terminalem, który może stać się dość ciężki. Oczywiście w Gvim jest inaczej
'guifont'
.Jeśli to zrobisz, nadal potrzebujesz sposobu na odjęcie wielkości komórki, która może się różnić w zależności od programu terminalowego, jeśli nie ma standardu . Sprawdziłem tylko iTerm 2, które na szczęście mają ten sam wynik.
Dlatego wybrałbym rozwiązanie statyczne. Przeszczepiłem kontrolę minimalnej szerokości do tego fragmentu, w którym możesz umieścić
plugin/help.vim
:Jeśli okno jest wystarczająco duże, aby pomieścić 80 kolumn bieżącego bufora, po prawej stronie otwiera się wąski podział pomocy, w przeciwnym razie podział otwiera się poniżej. Możesz dostosować kierunek podziału za pomocą
:vertical
.źródło