Como posso fazer com que o Vim abra a ajuda em uma divisão vertical?


18

Normalmente, trabalho em um terminal suspenso, com cerca de 25 caracteres de altura. Como eu prefiro abas às janelas 1 , geralmente muito espaço horizontal é desperdiçado - cerca da metade da largura do terminal.

Além disso, o Vim, com a configuração padrão de helpheight, deixa apenas algumas linhas do conteúdo do arquivo quando abro uma janela de ajuda:

insira a descrição da imagem aqui

Existe uma maneira de fazer :huso de uma divisão vertical?

Eu poderia:

  • diminuir helpheight
  • use <C-W>Lpara mover manualmente a janela
  • faça um mapa ou um comando personalizado que faça o acima para mim.

Existe uma maneira mais simples?

1 I fazer janelas de uso quando eu preciso de olhar para vários arquivos juntos. Mas geralmente prefiro que cada arquivo esteja em seu próprio contexto (mental).


@statox desculpe por isso. Não sei o que eu estava pensando quando escrevi isso.
muru

Ahah há necessidade de ser triste, isso também acontece para os melhores ;-)
statox

Respostas:


16

Você pode usar :vert h [your topic]para abrir a ajuda verticalmente.

Você pode usar o seguinte comando:

cnoreabbrev H vert h

Para fazer vim substituir Hpor vert hautomaticamente na linha de comando.

Além disso, você pode usar esta abreviação:

cnoreabbrev HR vert bo h

Para abrir a janela de ajuda no lado direito da tela. (veja :h :botrightpara mais detalhes sobre bo)


Então, nenhuma opção configurável? Algo como splitrightpara :help?
muru

Não sei ao certo o que você quer dizer, você prefere escolher onde a janela de ajuda deve ser colocada?
Statox

Eu acho que você quis dizer em :rightbelowvez de :botright.
muru

2
Bem, isso depende do comportamento que você está esperando, vamos diz que você deve jogar com :lefta[bove], :rightb[elow], :to[pleft]e :bo[tright]e veja qual você prefere. Eu prefiro :botrightmais :rightbelow, porque o que sempre a minha disposição é, eu vou pegar uma ajuda janelas da altura total da tela. Com :rightbelowé que eu já tenho uma divisão horizontal, minha janela de ajuda terá a altura dessa divisão.
statox

2
Infelizmente, escrever cabbrevcomandos corretos envolve algum ritual .
Sato Katsura

7

Esta é inspirado junegunn 's vimrc :

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

1
Estou curioso: como isso difere autocmd FileType help wincmd L? Algum caso de ponta?
muru

Eu acho que isso é acionado duas vezes, pelo menos algumas vezes (tente adicionar um eco lá). Pode ser algo a ver com a abertura da janela de ajuda, do que ir para a tag de ajuda específica. Portanto, BufEnterseria um pouco mais eficiente. Sem mencionar a adição de um comando que, quando acionado duas vezes, seria "desfeito" (se cancelará).
precisa saber é o seguinte

6

Você pode usar um comando personalizado que faça a seleção vertical ou não para você. Isso pode ser baseado na largura e altura da janela atual:

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

Referências :

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

Excelente. Isso será muito útil para os momentos em que o gvim aberto cobre uma metade vertical da minha tela.
Muru

0

Embora isso não seja uma divisão vertical em si, acho que ter ajuda em sua própria guia é muito bom.

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

Ops. Eu pensei que tinha colado toda a resposta. Aqui está o resto do código.

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

1
Seria uma boa idéia também mostrar qual é a sua HelpInNewTab()função, porque acho que esse não é um recurso interno, portanto não podemos realmente testar sua solução.
Statox

"aplica-se apenas a arquivos de ajuda ... função! HelpInNewTab () if & buftype == 'help'" converte a janela de ajuda em uma guia e executa a função de endif "normal \ <CW> T"
Mark Nichols
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.