Abrindo a ajuda do Vim em uma janela dividida vertical

114

Existe uma maneira de obter ajuda do Vim para abrir em um painel dividido vertical em vez de um horizontal?

Yewge
fonte

Respostas:

127

:vertical( vert) funciona:

:vert help

Você também pode controlar se a janela se divide à esquerda / superior ou à direita / inferior com topleft( to) e botright( bo) . Por exemplo, para abrir a ajuda na janela direita de uma divisão vertical:

:vert bo help
m42
fonte
2
como posso mapear isso para que quando eu corro: help ____ ele sempre abra assim?
Tallboy
13
@Tallboy Try cnoremap help vert help. Isso cria um mapeamento do modo de comando para que, ao digitar helpno modo de comando, ele se expanda para vert help.
Keith Pinson
3
@Kazark: cnoremap help vert helpfaz com que cada letra de helpapareça sozinha, para que a palavra helpnão apareça na linha de comando. Existe alguma maneira de corrigir isso? Talvez algo diferente cnoremap?
iconoclasta
7
Para melhorar mais: você pode usar cabbrev para redefinir h como vert h: :cabbrev h vert h. Então, toda vez que você digitar :h, ele se expandirá automaticamente para :vert h.
Aaron Shen,
@AaronShen: melhor solução (em combinação com esta resposta)!
gauteh
38

Como alternativa às respostas de Haroogan e Sean, você pode usar o FileTypeevento para o comando automático da seguinte maneira:

autocmd FileType help wincmd L

Embora isso mude a posição de qualquer janela de ajuda, bem como mova a janela depois de colocá-la manualmente se o arquivo que você está vendo mudar. Mas acredito que esse seja um problema de qualquer solução.

EdJoJob
fonte
2
Simples, e (se bem entendi) os efeitos colaterais são insignificantes. Por que essa não é a resposta aceita !? E por que uma resposta completamente irrelevante ( :vsplit) tem tantos votos positivos !?
iconoclasta
1
Eu votei positivamente tanto nisso quanto nas respostas de Haroogan por sua simplicidade. Não estou muito familiarizado com eventos autocmd e queria saber qual é o motivo, em help,*vez de simplesmente help. Além disso, percebi que esse comando funciona quando o adiciono ao meu _vimrce inicio uma nova instância do GVim, mas não quando executo o comando na minha sessão atual do GVim (tenho :set ft=helpque acionar manualmente o autocmd).
Anthony Geoghegan
Obrigado pelo comentário: o *não era realmente necessário. Tanto quanto eu posso entender para a sessão atual vs nova sessão, na nova sessão você precisaria recriar o seu vimrcpara que as alterações tenham efeito, além disso, se o arquivo já estiver aberto no buffer e :helpapenas o levar para um outro parte do arquivo, isso autocmdnão terá efeito
EdJoJob
Haverá uma maneira mais curta de também abordar: h com o mesmo autocmd? Atualmente escrevo em uma linha extra:autocmd FileType help wincmd L autocmd FileType h wincmd L
danbruegge
1
Este autocmd soluciona o problema examinando o tipo de arquivo dos arquivos de ajuda. Todos os arquivos de ajuda são do helptipo de arquivo, portanto, na configuração do helptipo de arquivo, este autocmd será executado. Você pode testar isso fazendo :sef helpem qualquer arquivo enquanto houver uma divisão em sua janela, portanto, o segundo autocmd de @danbruegge não seria necessário
EdJoJob
20

Não há necessidade de remapear nenhum comando ou introduzir apelidos estranhos como :Help. Aqui está a solução. Crie ~/.vim/after/ftplugin/help.vimonde você pode substituir quaisquer configurações do Vim especialmente para helpe adicionar a seguinte linha lá:

autocmd BufWinEnter <buffer> wincmd L

Este gancho irá garantir que qualquer helparquivo seja aberto na divisão vertical. Além disso, não tem um efeito colateral descrito na resposta de Sean. Pessoalmente, esta é a solução perfeita para mim até agora.

Espero que isto ajude. Boa sorte.

Alexander Shukaev
fonte
18

Este comando deve fazer isso:

:vert help
Berzemus
fonte
10
Eu não entendo isso. Tudo o que :vsplitfaz é dividir a janela atual verticalmente. Como esta abertura ajuda em um painel vertical?
DoubleDown
7

Coloque isso em seu .vimrc:

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

Agora você pode abrir uma ajuda vertical com o :Helpcomando (observe que a primeira letra está em maiúscula)

Crônico
fonte
6

Para fazer com que os arquivos de ajuda sempre abram em uma divisão vertical à direita, coloque isso em seu vimrc:

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

Isso terá o efeito colateral de ter qualquer coisa com "doc" em seu caminho aberto em uma divisão vertical, mas isso pode não ser um problema para você. Não é para mim. Se você preferir que ele abra em uma divisão vertical à esquerda, ou qualquer outra coisa, você pode mudar wincmd L. Você pode aprender mais sobre isso com:he wincmd

Sean Mackesey
fonte
1
Verifique o tipo de arquivo antes da divisão,:au BufEnter */doc/* if &filetype=='help' | wincmd L | endif
rox de
Isso é incrível! autocmd FileType help wincmd Lsó funciona uma vez para mim, isso funciona muito bem!
voldikss
6

Coloque o seguinte em seu ~/.vim/ftplugin/help.vim

wincmd L

Não pode ser mais simples do que isso :)

Shrikant Sharat
fonte
Isso não funciona mais. Veja este problema no Github: github.com/vim/vim/issues/1806
Ilker Mutlu
3

Isso move a janela de ajuda uma vez . Portanto, você pode movê-lo livremente após a criação da janela.

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

A função ILikeHelpToTheRight()só será executada wincmd Luma vez por janela (é o quew: serve prefixo).

Ele é então chamado sempre que um arquivo de "ajuda" é aberto. Isso não tem os efeitos colaterais da solução da EdJoJob.

docwhat
fonte
2

Abra dinamicamente as janelas de ajuda na parte superior se houver mais de uma janela na guia atual, ou à direita, se houver apenas uma janela:

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

Você precisará colocá-lo ftplugin/help.vimou usá-lo com um autocmd, por exemplo:

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

Isso foi feito para aumentar a resposta de @ m42, mas ainda não tenho 50 representantes aqui no SO adequados para adicionar aos comentários.

Adicionar nnoremap <C-H> :vert bo helpa .vimrc

Agora, pressionar Ctrl-H no modo Normal irá pular para o modo Command, prefixado para abrir a ajuda em uma janela dividida verticalmente à direita. Incluir um espaço à direita apóshelp· <- no final da linha de configuração para melhores resultados.

Este mapeamento permite que você ainda use :help\ :hpara abrir uma janela dividida horizontalmente ou percorrer seu histórico de comandos de ajuda anterior sem a expansão automática do prompt.

remyActual
fonte