Выделите синтаксис manpages?

Есть ли способ «раскрасить» вывод manpages? Я имею в виду - вывод, например:

man command_name
7
задан 18 April 2011 в 07:39

5 ответов

Я использую следующую функцию оболочки для просмотра man-страниц в Vim, которая обеспечивает хорошую подсветку синтаксиса:

0
ответ дан 18 April 2011 в 07:39

добавить export PAGER=most к .bashrc

0
ответ дан 18 April 2011 в 07:39

ах. добавление этого к ~ / .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
0
ответ дан 18 April 2011 в 07:39

Должен ли он быть в терминале?

В противном случае вы можете использовать: System-> Help-> System Documentation и в левой части окна, которое появляется, нажмите «Manual Pages» (нашел этот совет здесь )

Или вы можете использовать Konqueror, который показывает справочные страницы следующим образом: Man page in Konqueror

0
ответ дан 18 April 2011 в 07:39

Ответ 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, сделайте следующее:

  1. Добавьте эти исполняемые сценарии в своем пути:

    Существует два сценария, потому что первое для общей подкачки страниц (замена для меньше), в то время как второе для 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'
    
  2. В Вашем ~/.profile:

    export MANPAGER='vimrealmanpager'
    

Вы могли также сделать export -f на функциях я показал ранее, но это работает в ударе, но не оболочке POSIX, таким образом, необходимо было бы поместить его в .bash_profile вместо .profile.

Подобная вещь может быть сделана для nvim но я не собираюсь добавлять его здесь, если не требуется.

3
ответ дан 18 April 2011 в 07:39

Другие вопросы по тегам:

Похожие вопросы: