Ouverture de l'aide Vim dans une fenêtre fractionnée verticale

114

Existe-t-il un moyen d'obtenir l'aide de Vim pour ouvrir dans un volet fractionné vertical plutôt que horizontal?

Yewge
la source

Réponses:

127

:vertical( vert) fonctionne:

:vert help

Vous pouvez également contrôler si la fenêtre se divise à gauche / en haut ou à droite / en bas avec topleft( to) et botright( bo) . Par exemple, pour ouvrir l'aide dans la fenêtre de droite d'un fractionnement vertical:

:vert bo help
m42
la source
2
comment puis-je mapper cela alors quand je cours: aide ____ ça s'ouvre toujours comme ça?
Tallboy
13
@Tallboy Try cnoremap help vert help. Cela crée un mappage de mode de commande de sorte que lorsque vous tapez helpen mode de commande, vous le voyez se développer en vert help.
Keith Pinson
3
@Kazark: cnoremap help vert helpfait helpapparaître chaque lettre de par elle-même, ainsi le mot helpn'apparaît pas sur la ligne de commande. Y a-t-il un moyen de résoudre ce problème? Peut-être autre chose que cnoremap?
iconoclaste
7
Pour améliorer plus: vous pouvez utiliser cabbrev pour redéfinir h comme vert h: :cabbrev h vert h. Ensuite, chaque fois que vous tapez :h, il se développera automatiquement en :vert h.
Aaron Shen
@AaronShen: meilleure solution (en combo avec cette réponse)!
gauteh
38

Comme alternative aux réponses de Haroogan et Sean, vous pouvez utiliser l' FileTypeévénement pour l'autocommande comme ceci:

autocmd FileType help wincmd L

Bien que cela change la position de toute fenêtre d'aide ainsi que le déplacement de la fenêtre après l'avoir placée manuellement si le fichier que vous regardez change. Mais je crois que c'est un problème avec n'importe quelle solution.

EdJoJob
la source
2
Simple, et (si je comprends bien) les effets secondaires sont négligeables. Pourquoi n'est-ce pas la réponse acceptée!? Et pourquoi une réponse totalement non pertinente ( :vsplit) a-t-elle beaucoup de votes positifs!?
iconoclaste
1
J'ai voté à la fois pour cela et pour les réponses de Haroogan pour leur simplicité. Je ne suis pas très familier avec les événements autocmd et je me demandais quelle en était la raison help,*plutôt que simplement help. De plus, j'ai remarqué que cette commande fonctionne lorsque je l'ajoute à mon _vimrcet démarre une nouvelle instance de GVim mais pas lorsque j'exécute la commande dans ma session GVim actuelle (je dois :set ft=helpdéclencher manuellement l'autocmd).
Anthony Geoghegan
Merci pour le commentaire: le *n'était pas vraiment nécessaire. Autant que je puisse comprendre pour la session actuelle par rapport à la nouvelle session, dans la nouvelle session, vous devrez vous ressourcer vimrcpour que les modifications prennent effet, en outre si le fichier est déjà ouvert dans la mémoire tampon et :helpvous amène simplement à un autre partie du fichier, cela autocmdn'aura aucun effet
EdJoJob
Y aura-t-il un moyen plus court d'adresser également: h avec le même autocmd? Actuellement je l'écris dans une ligne supplémentaire:autocmd FileType help wincmd L autocmd FileType h wincmd L
danbruegge
1
Cet autocmd résout le problème en examinant le type de fichier des fichiers d'aide. Tous les fichiers d'aide sont du type de fichier help, donc sur la configuration du type de helpfichier, cet autocmd fonctionnera. Vous pouvez tester cela en faisant :sef helpdans n'importe quel fichier pendant qu'il y a une scission dans votre fenêtre, ainsi le deuxième autocmd de @ danbruegge ne serait pas nécessaire
EdJoJob
20

Pas besoin de remapper les commandes ou d'introduire des alias étranges comme :Help. Voici la solution. Créez ~/.vim/after/ftplugin/help.vimoù vous pouvez remplacer les paramètres de Vim en particulier pour helpet ajoutez la ligne suivante ici:

autocmd BufWinEnter <buffer> wincmd L

Ce crochet garantira que tout helpfichier est ouvert en fractionnement vertical. De plus, cela n'a pas d'effet secondaire décrit dans la réponse de Sean. Personnellement, c'est la solution parfaite pour moi jusqu'à présent.

J'espère que cela t'aides. Bonne chance.

Alexander Shukaev
la source
18

Cette commande devrait le faire:

:vert help
Berzemus
la source
10
Je ne comprends pas ça. Tout ce qui :vsplitfait est de diviser la fenêtre actuelle verticalement. Comment cela aide-t-il à ouvrir dans un volet vertical?
doubleDown
7

Mettez ceci dans votre .vimrc:

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

Vous pouvez maintenant ouvrir une aide verticale avec la :Helpcommande (notez que la première lettre est en majuscule)

Chroniques
la source
6

Pour que les fichiers d'aide s'ouvrent toujours dans une division verticale sur la droite, mettez ceci dans votre vimrc:

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

Cela aura pour effet secondaire d'avoir quoi que ce soit avec "doc" dans son chemin ouvert dans une division verticale, mais cela peut ne pas être un problème pour vous. Ce n'est pas pour moi. Si vous préférez qu'il s'ouvre dans une division verticale à gauche, ou quoi que ce soit d'autre d'ailleurs, vous pouvez changer wincmd L. Vous pouvez en savoir plus avec:he wincmd

Sean Mackesey
la source
1
Vérifiez le type de fichier avant le fractionnement,:au BufEnter */doc/* if &filetype=='help' | wincmd L | endif
rox
C'est génial! autocmd FileType help wincmd Lne fonctionne qu'une seule fois pour moi, cela fonctionne très bien!
voldikss
6

Mettez ce qui suit dans votre ~/.vim/ftplugin/help.vim

wincmd L

Je ne peux pas être plus simple que ça :)

Shrikant Sharat
la source
Cela ne fonctionne plus. Voir ce numéro sur Github: github.com/vim/vim/issues/1806
Ilker Mutlu
3

Cela déplace la fenêtre d'aide une fois . Vous pouvez donc le déplacer librement après la création de la fenêtre.

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

La fonction ILikeHelpToTheRight()ne s'exécutera wincmd Lqu'une seule fois par fenêtre (c'est à cela que w:sert le préfixe).

Celui-ci est ensuite appelé chaque fois qu'un fichier "d'aide" est ouvert. Cela n'a pas les effets secondaires de la solution d'EdJoJob.

doc what
la source
2

Ouvrez dynamiquement les fenêtres d'aide en haut s'il y a plus d'une fenêtre dans l'onglet actuel, ou à droite, s'il n'y a qu'une seule fenêtre:

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

Vous devrez le placer ftplugin/help.vimou l'utiliser avec un autocmd, par exemple:

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

Ceci est destiné à ajouter à la réponse de @ m42, mais je n'ai pas encore 50 représentants ici sur SO approprié pour ajouter aux commentaires.

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

Maintenant, appuyez sur Ctrl-H en mode Normal pour passer en mode Commande, préfixé pour ouvrir l'aide dans une fenêtre divisée verticalement vers la droite. Incluez un espace après help·<- à la fin de la ligne de configuration pour de meilleurs résultats.

Ce mappage vous permet d'utiliser toujours :help\ :hpour ouvrir une fenêtre fractionnée horizontalement ou de parcourir l'historique des commandes d'aide précédentes sans que l'invite ne se développe automatiquement.

remyActual
la source