Comment puis-je faire de l'aide ouverte de Vim dans une division verticale?

18

Je travaille généralement dans un terminal déroulant, avec environ 25 caractères de haut. Comme je préfère les onglets aux fenêtres 1 , beaucoup d'espace horizontal est généralement gaspillé - environ la moitié de la largeur du terminal.

En plus de cela, Vim, avec le paramètre par défaut de helpheight, laisse à peu près quelques lignes du contenu du fichier lorsque j'ouvre une fenêtre d'aide:

entrez la description de l'image ici

Existe-t-il un moyen d' :hutiliser une séparation verticale?

Je pouvais:

  • diminution helpheight
  • utiliser <C-W>Lpour déplacer manuellement la fenêtre
  • faire une carte ou une commande personnalisée qui fait ce qui précède pour moi.

Existe-t-il un moyen plus simple?

1 Je fais les fenêtres d'utilisation quand j'ai besoin de regarder plusieurs fichiers en même temps. Mais généralement, je préfère que chaque fichier soit dans son propre contexte (mental).

muru
la source
@statox désolé. Je ne sais pas ce que je pensais quand j'ai écrit ça.
muru
Ahah pas besoin d'être désolé ça arrive aussi aux meilleurs ;-)
statox

Réponses:

16

Vous pouvez utiliser :vert h [your topic]pour ouvrir l'aide verticalement.

Vous pouvez utiliser la commande suivante:

cnoreabbrev H vert h

Pour faire remplacer vim Hpar vert hautomatiquement en ligne de commande.

Vous pouvez également utiliser cette abréviation:

cnoreabbrev HR vert bo h

Pour ouvrir la fenêtre d'aide sur le côté droit de l'écran. (voir :h :botrightpour plus de détails sur bo)

statox
la source
Donc, pas d'option configurable? Quelque chose comme splitrightpour :help?
muru
Je ne suis pas sûr de comprendre ce que vous voulez dire, vous préférez pouvoir choisir l'emplacement de la fenêtre d'aide?
statox
Je pense que tu voulais dire :rightbelowau lieu de :botright.
muru
2
Eh bien cela dépend du comportement que vous attendez, laissez - vous dit que vous devriez jouer avec :lefta[bove], :rightb[elow], :to[pleft]et :bo[tright]voir celui que vous préférez. Je préfère :botrightplus :rightbelowparce que jamais ma mise en page est, je vais une fenêtre d'aide de toute la hauteur de l'écran. Avec :rightbelowj'ai déjà un fractionnement horizontal, ma fenêtre d'aide sera de la hauteur de ce fractionnement.
statox
2
Malheureusement, écrire des cabbrevcommandes correctes implique un rituel .
Sato Katsura
7

Ceci est inspiré du vimrc de junegunn :

augroup vimrc_help
  autocmd!
  autocmd BufEnter *.txt if &buftype == 'help' | wincmd L | endif
augroup END
VanLaser
la source
1
Je suis curieux: en quoi cela diffère- autocmd FileType help wincmd Lt-il? Des cas de bord?
muru
Je pense que cela se déclenche deux fois, au moins parfois (essayez d'y ajouter un écho). Cela pourrait être lié à l'ouverture de la fenêtre d'aide, plutôt que d'accéder à la balise d'aide spécifique. Ainsi, le BufEnterserait légèrement plus efficace. Sans parler de l'ajout d'une commande qui, lorsqu'elle est déclenchée deux fois, deviendrait "annulée" (s'annuler elle-même).
VanLaser
6

Vous pouvez utiliser une commande personnalisée qui effectue la sélection verticale ou non pour vous. Cela peut être basé sur la largeur et la hauteur de la fenêtre actuelle:

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

Les références :

  • :h winheight
  • :h <f-args>
nobe4
la source
Excellent. Ce sera très utile pour les moments où j'ai gvim ouvert couvrant une moitié verticale de mon écran.
muru
0

Bien que ce ne soit pas un fractionnement vertical en soi, je trouve très utile d'avoir de l'aide dans son propre onglet.

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

Oups. Je pensais avoir collé toute la réponse. Voici le reste du code.

" only apply to help files...
function! HelpInNewTab ()
  if &buftype == 'help'
    " convert help window to a tab
    execute "normal \<C-W>T"
  endif
endfunction
Mark Nichols
la source
1
Ce serait une bonne idée de montrer également quelle est votre HelpInNewTab()fonction car je pense que ce n'est pas une fonctionnalité intégrée, nous ne pouvons donc pas vraiment tester votre solution.
statox
"ne s'applique qu'aux fichiers d'aide ... fonction! HelpInNewTab () si & buftype == 'help'" convertir la fenêtre d'aide en un onglet exécuter "normal \ <CW> T" endif endfunction
Mark Nichols