Öffnen der Vim-Hilfe in einem vertikalen geteilten Fenster

114

Gibt es eine Möglichkeit, Vim-Hilfe dazu zu bringen, sich in einem vertikalen geteilten Bereich anstatt in einem horizontalen zu öffnen?

Eibe
quelle

Antworten:

127

:vertical( vert) funktioniert:

:vert help

Sie können auch steuern, ob das Fenster links / oben oder rechts / unten mit topleft( to) und botright( bo) geteilt wird . So öffnen Sie beispielsweise die Hilfe im rechten Fenster einer vertikalen Aufteilung:

:vert bo help
m42
quelle
2
Wie kann ich das so abbilden, wenn ich laufe: help ____ es öffnet sich immer so?
Tallboy
13
@ Talboy versuchen cnoremap help vert help. Dadurch wird eine Befehlsmoduszuordnung erstellt, sodass beim Eingeben helpim Befehlsmodus eine Erweiterung angezeigt wird vert help.
Keith Pinson
3
@Kazark: Lässt cnoremap help vert helpjeden Buchstaben von für sich helperscheinen, sodass das Wort helpnicht in der Befehlszeile erscheint. Gibt es eine Möglichkeit, das zu beheben? Vielleicht etwas anderes als cnoremap?
Bilderstürmer
7
Zur Verbesserung mehr: Sie können cabbrev verwenden , um neu zu definieren h als vert h: :cabbrev h vert h. Jedes Mal :h, wenn Sie tippen , wird es automatisch auf erweitert :vert h.
Aaron Shen
@ AaronShen: beste Lösung (in Kombination mit dieser Antwort)!
Gauteh
38

Als Alternative zu den Antworten von Haroogan und Sean können Sie das FileTypeEreignis für den Autobefehl wie folgt verwenden :

autocmd FileType help wincmd L

Dies ändert zwar die Position eines Hilfefensters und verschiebt das Fenster nach dem manuellen Platzieren, wenn sich die angezeigte Datei ändert. Aber ich glaube, dass dies bei jeder Lösung ein Problem ist.

EdJoJob
quelle
2
Einfach und (wenn ich das richtig verstehe) sind die Nebenwirkungen vernachlässigbar. Warum ist das nicht die akzeptierte Antwort? Und warum hat eine völlig irrelevante Antwort ( :vsplit) viele positive Stimmen?
Bilderstürmer
1
Ich habe sowohl diese als auch Haroogans Antworten wegen ihrer Einfachheit positiv bewertet. Ich bin mit Autocmd-Ereignissen nicht sehr vertraut und habe mich gefragt, warum das so ist, help,*anstatt einfach help. Außerdem habe ich festgestellt, dass dieser Befehl funktioniert, wenn ich ihn zu meinem hinzufüge _vimrcund eine neue Instanz von GVim starte, aber nicht, wenn ich den Befehl in meiner aktuellen GVim-Sitzung :set ft=helpausführe (ich muss ihn manuell auslösen, um den Autocmd auszulösen).
Anthony Geoghegan
Danke für den Kommentar: das *wurde eigentlich nicht gebraucht. Soweit ich für die aktuelle Sitzung im Vergleich zur neuen Sitzung verstehen kann, müssten Sie in der neuen Sitzung Ihre Daten neu beziehen, damit vimrcÄnderungen wirksam werden. Außerdem, wenn die Datei bereits im Puffer geöffnet ist und :helpSie nur zu einer anderen führt Als Teil der Datei hat dies autocmdkeine Auswirkung
EdJoJob
Wird es einen kürzeren Weg geben, um auch zu adressieren: h mit demselben Autocmd? Derzeit schreibe ich es in einer zusätzlichen Zeile:autocmd FileType help wincmd L autocmd FileType h wincmd L
danbruegge
1
Dieser Autocmd behebt das Problem anhand des Dateityps der Hilfedateien. Alle Hilfedateien sind vom helpDateityp, daher wird bei der Einstellung des helpDateityps dieses Autocmd ausgeführt. Sie können dies testen, indem Sie dies :sef helpin einer beliebigen Datei tun, während sich in Ihrem Fenster ein Split befindet. Daher wäre @ danbruegges zweites Autocmd nicht erforderlich
EdJoJob
20

Keine Notwendigkeit, Befehle neu zuzuordnen oder seltsame Aliase wie einzuführen :Help. Hier ist die Lösung. Erstellen ~/.vim/after/ftplugin/help.vimSie, wo Sie alle Vim-Einstellungen speziell für überschreiben können, helpund fügen Sie dort die folgende Zeile hinzu:

autocmd BufWinEnter <buffer> wincmd L

Dieser Hook stellt sicher, dass alle helpDateien in vertikaler Aufteilung geöffnet werden. Darüber hinaus hat es keine Nebenwirkung, die in Seans Antwort beschrieben ist. Persönlich ist dies bisher die perfekte Lösung für mich.

Hoffe das hilft. Viel Glück.

Alexander Shukaev
quelle
18

Dieser Befehl sollte es tun:

:vert help
Berzemus
quelle
10
Ich verstehe das nicht. Alles was Sie :vsplittun müssen, ist das aktuelle Fenster vertikal zu teilen. Wie hilft dieses Öffnen in einem vertikalen Bereich?
DoubleDown
7

Tragen Sie dies in Ihre .vimrc:

command -nargs=* -complete=help Help vertical belowright help <args>

Jetzt können Sie mit dem :HelpBefehl eine vertikale Hilfe öffnen (beachten Sie, dass der erste Buchstabe in Großbuchstaben geschrieben ist).

Chronial
quelle
6

Fügen Sie Folgendes in Ihr vimrc ein, damit Hilfedateien immer in vertikaler Aufteilung rechts geöffnet werden:

augroup helpfiles
  au!
  au BufRead,BufEnter */doc/* wincmd L
augroup END

Dies hat den Nebeneffekt, dass alles mit "doc" in seinem Pfad in einer vertikalen Aufteilung geöffnet ist, aber das ist möglicherweise kein Problem für Sie. Es ist nicht für mich. Wenn Sie es lieber in einer linken vertikalen Teilung oder etwas anderem öffnen möchten, können Sie dies ändern wincmd L. Mit können Sie mehr darüber erfahren:he wincmd

Sean Mackesey
quelle
1
Überprüfen Sie den Dateityp vor dem Teilen,:au BufEnter */doc/* if &filetype=='help' | wincmd L | endif
rox
Das ist fantastisch! autocmd FileType help wincmd Lfunktioniert nur einmal für mich, das funktioniert sehr gut!
Voldikss
6

Geben Sie Folgendes in Ihre ~/.vim/ftplugin/help.vim

wincmd L

Einfacher geht es nicht :)

Shrikant Sharat
quelle
Das funktioniert nicht mehr. Siehe diese Ausgabe auf Github: github.com/vim/vim/issues/1806
Ilker Mutlu
3

Dadurch wird das Hilfefenster einmal verschoben . Sie können es also frei bewegen, nachdem das Fenster erstellt wurde.

if has('autocmd')
  function! ILikeHelpToTheRight()
    if !exists('w:help_is_moved') || w:help_is_moved != "right"
      wincmd L
      let w:help_is_moved = "right"
    endif
  endfunction

  augroup HelpPages
    autocmd FileType help nested call ILikeHelpToTheRight()
  augroup END
endif

Die Funktion ILikeHelpToTheRight()wird nur wincmd Leinmal pro Fenster ausgeführt (dafür ist das w:Präfix vorgesehen).

Dies wird dann aufgerufen, wenn eine "Hilfedatei" geöffnet wird. Dies hat nicht die Nebenwirkungen der EdJoJob-Lösung.

docwhat
quelle
2

Öffnen Sie die Hilfefenster oben dynamisch, wenn sich mehr als ein Fenster in der aktuellen Registerkarte befindet, oder rechts, wenn nur ein Fenster vorhanden ist:

if winnr('$') > 2
    wincmd K
else
    wincmd L
endif

Sie müssen dies platzieren ftplugin/help.vimoder mit einem verwenden autocmd, z.

augroup my_filetype_settings
autocmd!
autocmd FileType help if winnr('$') > 2 | wincmd K | else | wincmd L | endif
augroup END
Rafi
quelle
1

Dies soll die Antwort von @ m42 ergänzen, aber ich habe hier auf SO noch keine 50 Wiederholungen, um die Kommentare zu ergänzen.

In nnoremap <C-H> :vert bo help.vimrc

Wenn Sie nun im Normalmodus Strg-H drücken, wird der Befehlsmodus aktiviert, der vorangestellt ist, um die Hilfe in einem vertikal geteilten Fenster rechts zu öffnen. Fügen Sie nach help·<- am Ende der Konfigurationszeile ein nachfolgendes Leerzeichen ein , um die besten Ergebnisse zu erzielen.

Mit dieser Zuordnung können Sie weiterhin :help\ verwenden :h, um ein horizontal geteiltes Fenster zu öffnen oder Ihren vorherigen Hilfebefehlsverlauf zu durchlaufen, ohne dass die Eingabeaufforderung automatisch erweitert wird.

remyActual
quelle