Markdown语法着色较少(寻呼机)

时间:2015-01-10 01:35:01

标签: markdown pager

当我使用vim编辑markdown文件时,我有很好的语法着色(通过vim-markdown和vim-markdown-preview插件)。

当我使用less(pager)查看文件时,我希望使用相同的语法着色。有没有办法减少这种语法着色?或者是否有另一个具有此功能的寻呼机?

4 个答案:

答案 0 :(得分:1)

您可以使用e2ansi,这是一个在批处理模式下使用Emacs来执行语法突出显示的程序包。您可以通过定义LESSOPEN环境变量来配置less以使用它。

要让Emacs语法突出显示MarkDown,您还需要安装markdown-mode

(最后,为了在编辑器中获得与less中相同的语法突出显示,我猜你必须切换到Emacs;)当然,考虑到Emacs带有一个名为Evil的Vim兼容包模式,它可能没有看起来那么糟糕。)

答案 1 :(得分:0)

less本身不支持语法突出显示,但您可以使用GNU-source-highlight

首先,您需要安装它。例如,在RHEL / Centos / Fedora上(以root身份):

$ yum install source-highlight

在Debian / Ubuntu上

$ apt-get install source-highlight

然后配置您的寻呼机使用它:

$ export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
$ export LESS=" -R"

现在,它应该只替换less

$ less README.md # pager with syntax highlighting

答案 2 :(得分:0)

启动并运行Vim Markdown highlighting (and folding)时,最直接的解决方案是使用vim或(至少在Ubuntu上)更优雅地唤醒只读模式中的vim -R

$ view filename.md

.vimrc文件的最底部添加以下内容,view的行为就像less一样,并带有您最喜欢的语法突出显示的附加好处(不仅仅用于降价!)和折叠:

" less behaviour for view
" https://stackoverflow.com/a/39836959/2192488

" http://vim.wikia.com/wiki/Using_vim_as_a_syntax-highlighting_pager
function! LessBehaviour()
    if (!&modifiable || &ro)
        set nonumber
        set nospell
        set laststatus=0    " Status line
        set cmdheight=1
        set guioptions=aiMr    " No menu bar, nor tool bar
        noremap u <C-u>
        noremap d <C-d>
        noremap q :q<CR>
    endif
endfunction

" https://vi.stackexchange.com/a/9101/3168
augroup ReadOnly
    au!
    au VimEnter * :call LessBehaviour() 
augroup END

还有一个更严格的less.sh脚本。在我的系统上,它与vim打包在一起。要找到它,请使用:

$ find /usr/share/vim -name less.sh

但是,与上面列出的脚本相反,折叠不适用于此less.sh

答案 3 :(得分:0)

这是一种使用less在控制台中查看GitHub markdown文件的方法。

  1. 安装pandoclynx

    a。对于Ubuntu(和WSL):sudo apt install pandoc lynx

    b。对于MacOS:brew install pandoc lynx

  2. 将以下脚本文件命名为less并将其保存在PATH上的某个位置,例如/usr/local/bin

  3. 使脚本可执行,例如chmod a+x /usr/local/bin/less
  4. 将运行类型hash -r/usr/bin/less而不是此脚本
#!/bin/bash

if [ "${1##*.}" == md ]; then
  pandoc "$1" | lynx -stdin
else
  /usr/bin/less "$1"
fi