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.


@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)


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

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>

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.