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.