Wie kann ich Vim open dazu bringen, in einem vertikalen Split zu helfen?


18

Normalerweise arbeite ich in einem Dropdown-Terminal mit ca. 25 Zeichen. Da ich Tabs gegenüber Windows 1 bevorzuge , wird normalerweise viel horizontaler Platz verschwendet - etwa die Hälfte der Terminalbreite.

Darüber hinaus helpheighthinterlässt Vim mit der Standardeinstellung von nur ein paar Zeilen des Dateiinhalts, wenn ich ein Hilfefenster öffne:

Bildbeschreibung hier eingeben

Gibt es eine Möglichkeit, :heine vertikale Aufteilung zu verwenden?

Ich könnte:

  • verringern helpheight
  • Verwenden Sie <C-W>L, um das Fenster manuell zu verschieben
  • Erstellen Sie eine Karte oder einen benutzerdefinierten Befehl, der die oben genannten Aufgaben für mich erledigt.

Gibt es einen einfacheren Weg?

1 Ich verwende Windows, wenn ich mehrere Dateien gleichzeitig betrachten möchte . Aber normalerweise bevorzuge ich, dass sich jede Datei in einem eigenen (mentalen) Kontext befindet.


@statox Entschuldigung. Keine Ahnung, was ich gedacht habe, als ich das geschrieben habe.
muru

Ahah, es muss nicht bedauert werden, dass es auch den Besten passiert
;-)

Antworten:


16

Mit können Sie die :vert h [your topic]Hilfe vertikal öffnen.

Sie können den folgenden Befehl verwenden:

cnoreabbrev H vert h

Um vim zu ersetzen Hdurch vert hautomatisch in der Befehlszeile.

Sie können auch diese Abkürzung verwenden:

cnoreabbrev HR vert bo h

So öffnen Sie das Hilfefenster auf der rechten Seite des Bildschirms. (siehe :h :botrightfür mehr Details auf bo)


Also keine konfigurierbare Option? Sowas splitrightfür :help?
muru

Ich bin mir nicht sicher, was Sie meinen. Sie möchten lieber auswählen können, wo das Hilfefenster platziert werden soll.
statox

Ich denke du meintest :rightbelowstatt :botright.
muru

2
Nun , es auf das Verhalten ab , die Sie erwarten, let sagt , dass man mit spielen :lefta[bove], :rightb[elow], :to[pleft]und :bo[tright]und sehen , welche Sie bevorzugen. Ich bevorzuge :botrightes, :rightbelowdenn was auch immer mein Layout ist, ich bekomme ein Hilfefenster in voller Höhe des Bildschirms. Wenn :rightbelowich bereits eine horizontale Aufteilung habe, hat mein Hilfefenster die Höhe dieser Aufteilung.
statox

2
Leider erfordert das Schreiben korrekter cabbrevBefehle ein gewisses Ritual .
Sato Katsura

7

Dies ist inspiriert von junegunns vimrc :

augroup vimrc_help
  autocmd!
  autocmd BufEnter *.txt if &buftype == 'help' | wincmd L | endif
augroup END

1
Ich bin gespannt: Wie unterscheidet sich das von autocmd FileType help wincmd L? Irgendwelche Randfälle?
muru

Ich denke, das wird zweimal ausgelöst, zumindest manchmal (versuchen Sie, dort ein Echo hinzuzufügen). Dies hat möglicherweise etwas mit dem Öffnen des Hilfefensters zu tun, als dass Sie zum entsprechenden Hilfetag gehen. Das BufEnterwäre also etwas effizienter. Ganz zu schweigen vom Hinzufügen eines Befehls, der bei zweimaliger Auslösung "rückgängig" wird (sich selbst abbrechen).
VanLaser

6

Sie können einen benutzerdefinierten Befehl verwenden, der die vertikale oder nicht vertikale Auswahl für Sie vornimmt. Dies kann auf der aktuellen Fensterbreite und -höhe basieren:

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

Verweise :

  • :h winheight
  • :h <f-args>

Ausgezeichnet. Dies ist sehr nützlich, wenn gvim eine vertikale Hälfte meines Bildschirms abdeckt.
muru

0

Dies ist zwar kein vertikaler Split per se, aber ich finde es sehr nett, Hilfe in einem eigenen Tab zu haben.

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

Hoppla. Ich dachte, ich hätte die ganze Antwort eingefügt. Hier ist der Rest des Codes.

" only apply to help files...
function! HelpInNewTab ()
  if &buftype == 'help'
    " convert help window to a tab
    execute "normal \<C-W>T"
  endif
endfunction

1
Das wäre eine gute Idee, um auch zu zeigen, was Ihre HelpInNewTab()Funktion ist, da dies meines Erachtens keine integrierte Funktion ist, sodass wir Ihre Lösung nicht wirklich testen können.
statox

msgstr "Nur auf Hilfedateien anwenden ... Funktion! HelpInNewTab (), wenn & buftype == 'help'" Hilfefenster in eine Registerkarte konvertieren "normal \ <CW> T" endif endfunction ausführen
Mark Nichols
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.