Есть ли способ «раскрасить» вывод manpages? Я имею в виду - вывод, например:
man command_name
Я использую следующую функцию оболочки для просмотра man-страниц в Vim, которая обеспечивает хорошую подсветку синтаксиса:
ах. добавление этого к ~ / .bashrc делает свое дело. Это не идеально, хотя. но эй:
# 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
Должен ли он быть в терминале?
В противном случае вы можете использовать: System-> Help-> System Documentation и в левой части окна, которое появляется, нажмите «Manual Pages» (нашел этот совет здесь )
Или вы можете использовать Konqueror, который показывает справочные страницы следующим образом:
Ответ Adam Byrtek, кажется, ограничивает строки 80 символами и не делает текста обратного течения, когда Вы изменяете размер своего терминала.
Можно зафиксировать это путем установки MANPAGER
вместо этого. Можно также установить PAGER
как daithib8 делает, но это является более общим. MANPAGER
переопределения PAGER
для man
команда.
От этого
export MANPAGER="col -b | vim -c 'set ft=man ts=8 nomod nolist nonu' -c 'nnoremap i <nop>' -"
У него есть некоторые довольно хорошие дополнительные опции, такие как установка ts
(позиция табуляции), nonu
(неумбра) и неотображение i
(вставить). Таким образом, я объединю эти два решения. Также сделанный некоторыми улучшениями как использование command
управляйте и расширяющиеся споры с "$@"
Как функция:
man() {
MANPAGER="col -b | vim -R -c 'set ft=man ts=8 nomod nolist nonu' -c 'nnoremap i <nop>' -" command man "$@"
}
Править: прокрутите вниз к моему ОБНОВЛЕНИЮ для наблюдения преимуществ использования этой грязной формы и более чистого способа записать функцию с некоторыми дополнительными отображениями энергии.
Но выполнение всего этого является действительно большой путаницей. Следующие решения требуют установки, но они - более чистые решения.
Эти решения не имеют Vim: Reading from stdin...
то, что вышеупомянутое решение имеет.
Я рекомендую ответ daithib8 кроме использовать MANPAGER
вместо PAGER
так как этим вопросом являются примерно страницы справочника. И я также добавил бы его к моему .bash_profile
или .profile
таким образом, это не становится экспортируемым на каждом вызове bash
. Необходимо будет установить most
все же.
# In .profile or .bash_profile
MANPAGER='most'
most
не имеет hjkl
перемещение как в vim
и less
, но это является самым быстрым.
Кроме того, vimpager
довольно хорошо. Мне нравится использовать его для огромных страниц справочника такой как man bash
. Вы получаете все прохладные вещи от энергии, такие как номера строки number
, выделенный поиск hlsearch
, и все Ваши плагины энергии.
Если Вы имеете YouCompleteMe
установленный vimpager
также не показывает это сообщение:
The ycmd server SHUT DOWN (restart with ':YcmRestartServer'). Unexpected exit code 1. Type ':YcmToggleLogs ycmd_54959_stderr_UvwUrj.log' to check the logs.
Не уверенный, почему, но хорошо не видеть это.
# In .profile or .bash_profile
export MANPAGER='vimpager'
Запуск может быть немного медленнее, чем most
потому что vimpager
получает Ваш .vimrc
, который может быть хорошей вещью, если Вы хотите использовать свои плагины энергии. Отключить .vimrc
определение источника:
# In .profile or .bash_profile
export MANPAGER='vimpager -u NONE'
Можно также сделать гибридный подход с функциями:
# 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 "$@"
}
Таким образом, теперь, export MANPAGER
установит Ваше значение по умолчанию MANPAGER
в Вашем .bash_profile
или .profile
, но можно использовать любую из этих функций для быстрого использования другого MANPAGER
.
ОБНОВЛЕНИЕ
На самом деле vimpager немного отличается, чем фактическая энергия. Например, в нормальном режиме, w
отображается на b
и b
отображается на & <C-B><SNR>1_L
. Но это - то, как другие пейджеры - меньше не имеет курсора.
Если требуется использовать фактическую энергию с грязным решением, я нашел это. Это подавляет Vim: Reading from stdin...
со взломом. Все еще сделал, чтобы YouCompleteMe обменивался сообщениями все же. Можно, вероятно, установить другого -c
команда, чтобы сделать выключает YouCompleteMe. Но я просто проигнорирую то сообщение.
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 "$@"
}
В более новых версиях энергии можно избежать этого взлома с --not-a-term
:
Я очистил функцию с Escape новой строки, потому что это - версия, которую я использую.
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 "$@"
}
Или можно просто использовать неоэнергию> 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 "$@"
}
Вы могли бы хотеть просмотреть опции энергии, переданные для настройки. Я просмотрел их из всех тех сообщений, я перечислил и выбрал тех, мне понравилось. Или можно просто скопировать меня.
Вы могли также проанализировать vim --version
определить, использовать ли взлом или --not-a-term
. Я не сделаю этого здесь.
МОЙ СУЩЕСТВУЮЩИЙ МЕТОД
Если требуется установить этот метод энергии как значение по умолчанию MANPAGER
, сделайте следующее:
Добавьте эти исполняемые сценарии в своем пути:
Существует два сценария, потому что первое для общей подкачки страниц (замена для меньше), в то время как второе для manpaging (имеет подсветку синтаксиса страницы справочника.
# 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'
В Вашем ~/.profile:
export MANPAGER='vimrealmanpager'
Вы могли также сделать export -f
на функциях я показал ранее, но это работает в ударе, но не оболочке POSIX, таким образом, необходимо было бы поместить его в .bash_profile вместо .profile.
Подобная вещь может быть сделана для nvim
но я не собираюсь добавлять его здесь, если не требуется.