Eu uso a seguinte função de shell para visualizar as páginas de manual no Vim, que fornece um bom destaque de sintaxe:
man() {
/usr/bin/man $* | \
col -b | \
vim -R -c 'set ft=man nomod nolist' -
}
Existe uma maneira de "colorir" a saída de manpages? Quero dizer - a saída de, por exemplo:
man command_name
Eu uso a seguinte função de shell para visualizar as páginas de manual no Vim, que fornece um bom destaque de sintaxe:
man() {
/usr/bin/man $* | \
col -b | \
vim -R -c 'set ft=man nomod nolist' -
}
adicione export PAGER=most
a .bashrc
aha. adicionando isso ao ~ / .bashrc faz o truque. Não é perfeito embora. mas ei:
# Less Colors for Man Pages
export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking
export LESS_TERMCAP_md=$'\E[01;38;5;74m' # begin bold
export LESS_TERMCAP_me=$'\E[0m' # end mode
export LESS_TERMCAP_se=$'\E[0m' # end standout-mode
export LESS_TERMCAP_so=$'\E[38;5;246m' # begin standout-mode - info box
export LESS_TERMCAP_ue=$'\E[0m' # end underline
export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline
A resposta Adam Byrtek parece limitar as linhas a 80 caracteres e não reflui texto quando você redimensiona seu terminal.
Você pode corrigir isso configurando MANPAGER
. Você também pode definir PAGER
como daithib8 , mas isso é mais geral. MANPAGER
substitui PAGER
pelo comando man
.
De este
export MANPAGER="col -b | vim -c 'set ft=man ts=8 nomod nolist nonu' -c 'nnoremap i <nop>' -"
Ele tem algumas boas opções extras, como a configuração de ts
(tabstop), nonu
(nonumber) e unmapping i
(insert). Então eu vou mesclar as duas soluções. Também fiz algumas melhorias, como usar o comando command
e expandir argumentos com "$@"
Como uma função:
man() {
MANPAGER="col -b | vim -R -c 'set ft=man ts=8 nomod nolist nonu' -c 'nnoremap i <nop>' -" command man "$@"
}
EDITAR: navegue até meu UPDATE para ver os benefícios de usar esse formulário bagunçado e uma maneira mais clara de escrever a função com alguns mapeamentos extras do vim.
Mas fazer tudo isso é uma grande bagunça. As soluções a seguir requerem instalação, mas são soluções mais limpas.
Essas soluções não têm o Vim: Reading from stdin...
que a solução acima tem.
Eu recomendo a resposta da daithib8 , exceto para usar MANPAGER
em vez de PAGER
, já que essa questão é apenas sobre manpages. E eu também adicionaria ao meu .bash_profile
ou .profile
para que ele não seja exportado em cada chamada de bash
. Você terá que instalar most
embora.
# In .profile or .bash_profile
MANPAGER='most'
most
não tem hjkl
de movimento como em vim
e less
, mas é o mais rápido.
Além disso, vimpager
é muito bom. Eu gosto de usá-lo para manpages enormes como man bash
. Você obtém todas as coisas legais do vim, como números de linha number
, pesquisa destacada hlsearch
e todos os seus plugins vim.
Se você tiver YouCompleteMe
instalado, vimpager
também não mostrará esta mensagem:
The ycmd server SHUT DOWN (restart with ':YcmRestartServer'). Unexpected exit code 1. Type ':YcmToggleLogs ycmd_54959_stderr_UvwUrj.log' to check the logs.
Não sei porquê, mas é bom não ver isso.
# In .profile or .bash_profile
export MANPAGER='vimpager'
A inicialização pode ser um pouco mais lenta que most
porque vimpager
origina seu .vimrc
, o que pode ser uma coisa boa, se você quiser usar seus plugins vim. Para desativar .vimrc
sourcing:
# In .profile or .bash_profile
export MANPAGER='vimpager -u NONE'
Você também pode fazer uma abordagem híbrida com funções:
# Use 'command man' instead of 'man' if you have overridden
# 'man' with a function, like how I did in the "messy" solutions above.
manmost() {
MANPAGER='most' man "$@"
}
manvim() {
MANPAGER='vimpager -u NONE' man "$@"
}
manvimrc() {
MANPAGER='vimpager' man "$@"
}
Agora, export MANPAGER
definirá seu MANPAGER
padrão em .bash_profile
ou .profile
, mas você pode usar qualquer uma dessas funções para usar rapidamente outro MANPAGER
.
UPDATE
Na verdade, o vimpager é um pouco diferente do vim real. Por exemplo, no modo normal, w
é mapeado para b
e b
é mapeado para & <C-B><SNR>1_L
. Mas é assim que outros pagers são - menos não tem um cursor.
Se você quiser usar o vim real, com uma solução confusa, eu encontrei isto . Suprime o Vim: Reading from stdin...
com um hack. Ainda tem a mensagem YouCompleteMe embora. Você provavelmente pode definir outro comando -c
para desativar YouCompleteMe. Mas vou ignorar essa mensagem.
manrealvim() {
MANPAGER='bash -c "vim -MRn -c \"set ft=man nomod nolist nospell nonu\" -c \"nm q :qa!<CR>\" -c \"nm <end> G\" -c \"nm <home> gg\"</dev/tty <(col -b)"' man "$@"
}
Nas versões mais recentes do vim , você pode evitar esse hack com --not-a-term
:
Limpei a função com escapes de nova linha, porque esta é a versão que estou usando.
manvim() {
MANPAGER='col -b | '\
'vim -MR -c "set ft=man ts=8 nomod nolist nospell nonu" '\
'-c "set colorcolumn= hlsearch incsearch" '\
'-c "nun <buffer> q" '\
'-c "nn q :qa!<CR>" '\
'-c "nn <end> G" '\
'-c "nn <home> gg" '\
'- --not-a-term' man "$@"
}
Ou você pode usar apenas neovim > v0.2.2 :
# not sure why but the -M flag breaks it but it's not required
# Seems like nvim already sets -M when ft=man
mannvim() {
MANPAGER='col -b | '\
'nvim -R -c "set ft=man ts=8 nomod nolist nospell nonu" '\
'-c "nun <buffer> q" '\
'-c "nn q :qa!<CR>" '\
'-c "nn <end> G" '\
'-c "nn <home> gg" '\
'-' man "$@"
}
Você pode querer examinar as opções do vim passadas para personalizar. Eu olhei através deles de todas as mensagens que listei e escolhi as que eu gostava. Ou você pode simplesmente me copiar.
Você também pode analisar vim --version
para determinar se deve usar o hack ou --not-a-term
. Eu não farei isso aqui.
MEU MÉTODO ATUAL
Se você quiser definir esse método vim como seu padrão MANPAGER
, faça o seguinte:
Adicione esses scripts executáveis ao seu caminho:
Existem dois scripts porque o primeiro é para paginação geral (substituição por menos), enquanto o segundo é para manpaging (tem destaque de sintaxe de manpage.
# Put this in ~/bin/vimrealpager
# I call it vimrealpager to avoid name clashes with vimpager mentioned above
# Make sure ~/bin/ is in your path
# ***SCRIPT START***
#!/usr/bin/env sh
col -b |
vim -MR -c 'set nomod nolist nospell nonu' \
-c 'set colorcolumn= hlsearch incsearch' \
-c 'nn q :qa!<CR>' \
-c 'nn <end> G' \
-c 'nn <home> gg' \
"$@" \
--not-a-term \
-
# Put this in ~/bin/vimrealmanpager
# ***SCRIPT START***
#!/usr/bin/env sh
vimrealpager -c 'set ft=man' \
-c 'nun <buffer> q'
No seu ~ / .profile:
export MANPAGER='vimrealmanpager'
Você também pode fazer export -f
nas funções que mostrei anteriormente, mas ele funciona no bash, mas não no shell POSIX, então você teria que colocá-lo em .bash_profile ao invés de .profile.
Uma coisa semelhante pode ser feita para nvim
, mas não vou adicioná-lo aqui, a menos que seja solicitado.
Tags manpage