Jak mogę otworzyć pomoc Vima w podziale pionowym?

18

Zwykle pracuję w rozwijanym terminalu o wysokości około 25 znaków. Ponieważ wolę karty od okien 1 , zwykle marnuje się dużo poziomej przestrzeni - około połowy szerokości terminala.

Ponadto Vim, z domyślnym ustawieniem helpheight, pozostawia około kilku wierszy zawartości pliku, gdy otwieram okno pomocy:

wprowadź opis zdjęcia tutaj

Czy istnieje sposób na :hzastosowanie podziału pionowego?

Mógłbym:

  • zmniejszać helpheight
  • Użyj, <C-W>Laby ręcznie przenieść okno
  • stwórz mapę lub niestandardowe polecenie, które zrobi dla mnie powyższe.

Czy istnieje prostszy sposób?

1 I zrobić Windows używają kiedy trzeba spojrzeć na wielu plikach razem. Ale zwykle wolę, aby każdy plik był w swoim (mentalnym) kontekście.

muru
źródło
@statox przepraszam za to. Nie wiem, o czym myślałem, kiedy to napisałem.
muru
Ach nie trzeba żałować, zdarza się to także najlepszym ;-)
statox

Odpowiedzi:

16

Możesz użyć, :vert h [your topic]aby otworzyć pomoc w pionie.

Możesz użyć następującego polecenia:

cnoreabbrev H vert h

Aby vim zastąpił Hsię vert hautomatycznie w linii poleceń.

Możesz także użyć tego skrótu:

cnoreabbrev HR vert bo h

Aby otworzyć okno pomocy po prawej stronie ekranu. (zobacz :h :botrightwięcej informacji na temat bo)

statox
źródło
Więc nie ma opcji konfigurowalnej? Coś podobnego splitrightdo :help?
muru
Nie jestem pewien, czy rozumiesz, co masz na myśli, czy wolisz wybrać miejsce, w którym ma zostać umieszczone okno pomocy?
statox
Myślę, że miałeś na myśli :rightbelowzamiast :botright.
muru
2
To zależy od zachowania oczekujesz, niech mówi, że należy grać :lefta[bove], :rightb[elow], :to[pleft]a :bo[tright]i zobaczyć, który wolisz. Wolę :botrightponad, :rightbelowponieważ bez względu na to, jaki jest mój układ, otrzymam okna pomocy na całej wysokości ekranu. W przypadku, gdy :rightbelowmam już podział poziomy, moje okno pomocy będzie miało wysokość tego podziału.
statox
2
Niestety pisanie poprawnych cabbrevpoleceń wymaga pewnego rytuału .
Sato Katsura
7

Inspiruje to vimrc junegunna :

augroup vimrc_help
  autocmd!
  autocmd BufEnter *.txt if &buftype == 'help' | wincmd L | endif
augroup END
VanLaser
źródło
1
Jestem ciekawy: czym to się różni autocmd FileType help wincmd L? Jakieś przypadki na krawędzi?
muru
Myślę, że uruchamia się to dwukrotnie, przynajmniej czasami (spróbuj dodać tam echo). Może to mieć coś wspólnego z otwarciem okna pomocy, niż przejściem do konkretnego tagu pomocy. Tak, BufEnterbędzie nieco bardziej wydajny. Nie wspominając już o dodaniu polecenia, które po dwukrotnym uruchomieniu spowoduje „cofnięcie” (samo anulowanie).
VanLaser,
6

Możesz użyć niestandardowego polecenia, które dokonuje wyboru pionowego lub nie. Może to być oparte na bieżącej szerokości i wysokości okna:

function! s:ShowHelp(tag) abort
  if winheight('%') < winwidth('%')
    execute 'vertical help '.a:tag
  else
    execute 'help '.a:tag
  endif
endfunction

command! -nargs=1 H call s:ShowHelp(<f-args>)

Bibliografia :

  • :h winheight
  • :h <f-args>
nobe4
źródło
Doskonały. Będzie to bardzo przydatne w czasach, gdy mam otwarty gvim pokrywający pionową połowę ekranu.
muru
0

Chociaż samo w sobie nie jest to podział pionowy, bardzo mi się podoba pomoc we własnej zakładce.

augroup HelpInTabs
autocmd!
   autocmd BufEnter *.txt call HelpInNewTab()
augroup END

Ups Myślałem, że wkleiłem całą odpowiedź. Oto reszta kodu.

" only apply to help files...
function! HelpInNewTab ()
  if &buftype == 'help'
    " convert help window to a tab
    execute "normal \<C-W>T"
  endif
endfunction
Mark Nichols
źródło
1
Byłoby to dobrym pomysłem, aby pokazać, jaka jest twoja HelpInNewTab()funkcja, ponieważ uważam, że nie jest to wbudowana funkcja, więc nie możemy tak naprawdę przetestować twojego rozwiązania.
statox
"dotyczy tylko plików pomocy ... funkcja! HelpInNewTab () if & buftype == 'help'" konwertuj okno pomocy na zakładkę uruchom endfunkcję „normal \ <CW> T”
Mark Nichols