Eu escrevi uma função no bash para ver manpages
no vim
viman () { man "$@" | vim -R +":set ft=man" - ; }
Isso funciona bem, o único problema ocorre se eu passar um manpage
para ele que não existe. Ele imprime que o manpage
não existe, mas ainda abre vim
com um buffer vazio.
Então, alterei a função para verificar o código de erro ( que está 16
aqui ) e sair se manpage
não existir. A função modificada se parece com isso -
viman () { man "$@" | [[ $? == 16 ]] && exit 1 | vim -R +":set ft=man" - ; }
Mas, agora não faz nada!!
Eu só quero sair do programa se manpage
não existir, caso contrário, abra o manpage
comvim
Tente isto: capture a saída man e, se for bem-sucedido, inicie o vim
Gosto da ideia de verificar o
man
código de retorno; você não pode canalizar para o teste, no entanto. Você poderia simplesmente executarman
duas vezes:Isso é executado
man ... | vim ...
somente se a primeira invocação deman
foi bem-sucedida.Há uma variável de ambiente chamada
MANPAGER
que pode ser usada paraman
chamar o comando que você deseja para exibir a página de manual. A vantagem disso é que você chamaman
diretamente e não executará o pager se a página de manual não existir.Então, um script wrapper, digamos em
~/bin/vimman
:Com isso em seus arquivos de inicialização do shell em algum lugar:
E você pode executar diretamente
man foo
para páginas de manual no Vim.(Dependendo do
man
comando que está sendo usado, você também pode ter:diretamente em vez de um script wrapper.)
Se você tiver um Vim novo o suficiente, poderá usar a
--not-a-term
opção para impedir que o Vim reclame sobre o stdin não ser um TTY.Plug sem vergonha: escrevi um pequeno plugin para facilitar o uso do Vim como manpager.
Com base nesta resposta , isso inicia o vim e sai se não houver nada no buffer. A desvantagem é que ele inicia
vim
assim que a tela "pisca". Ele também não define um código de saída quando umaman
página não é encontrada.Esta é uma melhoria na resposta de Jeff Schaller, pois não carrega a
man
página duas vezes quando ela existe. Ele também não carregavim
desnecessariamente como meu exemplo anterior. E define um código de saída quando não háman
página.Ambos os exemplos usam a substituição do processo Bash para evitar a mensagem "Vim: Reading from stdin...".
Nenhum carrega a página em uma variável.
Funciona para bash e zsh. Relata erro se não for encontrado sem entrar no nvim.