Come posso rendere Vim un aiuto aperto in una divisione verticale?


18

Di solito lavoro in un terminale a discesa, con un'altezza di circa 25 caratteri. Dato che preferisco le schede alle finestre 1 , di solito viene sprecato molto spazio orizzontale, circa la metà della larghezza del terminale.

Inoltre, Vim, con l'impostazione predefinita di helpheight, lascia solo un paio di righe del contenuto del file quando apro una finestra di aiuto:

inserisci qui la descrizione dell'immagine

C'è un modo per :hutilizzare una divisione verticale?

Potrei:

  • diminuire helpheight
  • usare <C-W>Lper spostare manualmente la finestra
  • crea una mappa o un comando personalizzato che faccia quanto sopra per me.

c'è un modo più facile?

1 Io faccio uso Windows quando ho bisogno di guardare più file insieme. Ma di solito preferisco che ogni file sia nel suo contesto (mentale).


@statox mi dispiace per quello. Non so cosa stavo pensando quando l'ho scritto.
Muru,

Ahah non c'è bisogno di essere dispiaciuto capita anche ai migliori ;-)
statox

Risposte:


16

È possibile utilizzare :vert h [your topic]per aprire la guida in verticale.

Puoi usare il seguente comando:

cnoreabbrev H vert h

Per rendere Vim sostituire Hda vert hautomaticamente in linea di comando.

Inoltre puoi usare questa abbreviazione:

cnoreabbrev HR vert bo h

Per aprire la finestra della guida sul lato destro dello schermo. (vedi :h :botrightper maggiori dettagli su bo)


Quindi, nessuna opzione configurabile? Qualcosa del genere splitrightper :help?
muru,

Non sono sicuro di capire cosa vuoi dire, preferiresti essere in grado di scegliere dove posizionare la finestra di aiuto?
statox

Penso che volevi dire :rightbelowinvece di :botright.
muru,

2
Beh, dipende dal comportamento vi aspettate, lasciate dice che si dovrebbe giocare con :lefta[bove], :rightb[elow], :to[pleft]e :bo[tright]e vedere quale preferite. Preferisco :botrightrispetto :rightbelowperché qualunque sia il mio layout, otterrò una finestra di aiuto per l'intera altezza dello schermo. Con :rightbelowho già una divisione orizzontale, la mia finestra di aiuto sarà dell'altezza di questa divisione.
statox

2
Purtroppo, la scrittura di cabbrevcomandi corretti comporta alcuni rituali .
Sato Katsura,

7

Questo si ispira al vimrc di Junegunn :

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

1
Sono curioso: in cosa differisce autocmd FileType help wincmd L? Eventuali casi limite?
muru,

Penso che venga attivato due volte, almeno a volte (prova ad aggiungere un'eco lì). Potrebbe essere qualcosa a che fare con l'apertura della finestra di aiuto, piuttosto che andare al tag di aiuto specifico. Quindi, BufEntersarebbe leggermente più efficiente. Per non parlare dell'aggiunta di un comando che, se attivato due volte, diventerebbe "annullato" (annullarsi).
VanLaser,

6

Puoi usare un comando personalizzato che fa la selezione verticale o no per te. Questo può essere basato sull'attuale larghezza e altezza della finestra:

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

Riferimenti :

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

Eccellente. Questo sarà molto utile per le volte che ho gvim aperto che copre una metà verticale del mio schermo.
muru,

0

Anche se questa non è una divisione verticale di per sé, trovo molto utile avere un aiuto nella sua scheda.

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

Ops. Pensavo di aver incollato l'intera risposta. Ecco il resto del codice.

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

1
Sarebbe una buona idea mostrare anche qual è la tua HelpInNewTab()funzione perché penso che questa non sia una funzionalità integrata, quindi non possiamo davvero testare la tua soluzione.
statox

"applica solo ai file della guida ... funzione! HelpInNewTab () if & buftype == 'help'" converti la finestra della guida in una scheda esegui la funzione endif "normale \ <CW> T"
Mark Nichols
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.