如何通过 Less 语法高亮

Jes*_*sen 159 less syntax-highlighting

有没有办法用语法突出显示我在 Less 中看到的文件?

实际上我正在使用此命令打开一个 xml 文件(有时是一系列文件)

less htmleditors/htmleditors_config.xml
Run Code Online (Sandbox Code Playgroud)

或者

less [multiple files]
Run Code Online (Sandbox Code Playgroud)

我想留在 Less(为了更好地学习该程序并使用我的 :n 和 :p 知识进行下一个/上一个导航)

但它也需要某种基本的语法突出显示——至少以不同的方式显示注释。你知道有什么方法吗?

bra*_*ter 144

您可以使用GNU的源亮点,如在这里(路径可能会有所不同,见下文):

 export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
 export LESS=' -R '
Run Code Online (Sandbox Code Playgroud)

从 Debian Stretch 和 Fedora 25 开始,软件包名称和脚本路径有所不同

  • 在 Debian 上:`sudo apt-get install source-highlight`、`export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s"`、`export LESS=' -R '` (24认同)
  • OSX: `brew install source-highlight`; `export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"`。注意路径变化。 (16认同)
  • 小警告:source-highlight 目前不支持 markdown。 (3认同)
  • @JJD 你安装了 source-highlight 吗? (2认同)

小智 124

前两个答案中最好的一个:您可以通过按 来从less 中调用系统默认编辑器v

  • 在我的 Ubuntu 机器上打开 Nano 的诅咒! (16认同)
  • 然后将 $EDITOR 或 $VISUAL 设置为 vim(或 emacs、gedit、joe、ed、mined 或...)。 (7认同)
  • 哇!这非常有用! (5认同)

小智 37

pygmentize somefile.ex | less -R
Run Code Online (Sandbox Code Playgroud)

或者

function cless () {
    pygmentize -f terminal "$1" | less -R
}
Run Code Online (Sandbox Code Playgroud)

Pygmentize 是Pygments Python 语法 highliter 的一部分

  • `pygmentize` 也适用于此处其他答案中提到的 `LESSOPEN` 内容。 (3认同)
  • 要让 `less` 使用 `pygmentize` 进行语法高亮显示,请使用:`which pygmentize 2> /dev/null >&2 && export LESSOPEN="| pygmentize -g -f terminal256 %s"`。`-g` 使其与管道一起工作(`less <(diff -u file1 files)`)。它在`arch linux` 的`community/pygmentize` 包和`debian` 的`python-pygments` 包中可用。 (3认同)
  • 要获得 `pygmentize`,你需要 Python,然后你可以使用 `pip install pygments` 安装 `pygmentize`。 (2认同)

huy*_*uyz 21

正如其他人所说,您可以使用 vim 的强大功能。但重要的是,您无需学习如何使用 vi/vim 就可以做到这一点。

Vim 带有一个less.vim脚本,它可以很好地替代 less,具有全彩色语法突出显示。它使用less键绑定(只需点击“q”即可退出)。

它有一些问题,所以我改进了它。这是我的博客文章中的屏幕截图(存档于 2013-04-09;原始抛出 503):

https://github.com/huyz/less.vim 的截图

  • 惊人的!但由于我无法立即找到脚本,我想分享用于定位它的命令:`find /usr/share/vim -name 'less.sh'`,它取自以下要点:https:// gist.github.com/chauncey-garrett/9773770 (3认同)

six*_*ude 16

我认为您应该使用文本编辑器。我自己喜欢vim。这将在查看文件时为您提供强大的功能,然后当您想要编辑它们时,您将已经了解基础知识。

以下是使用文本编辑器(特别是 vim)的一些优点:

  • 语法高亮
  • 强大的移动命令
  • 跳转到文件中的特定位置(称为标记)
  • 折叠(当您只想查看函数存根时很有用)

要以只读模式打开文件,请使用以下命令:

vim -R <file name>
Run Code Online (Sandbox Code Playgroud)

这是一个基本的导航指南:

j - move down one line
k - move up one line
h - left one char
l -right one char

ctrl-f - forward one page
ctrl-b - back one page

/<something> - search for something
n - next of whatever you searched for
N - next (search backwards) of whatever you searched for

:q - quit
:q! - quit without saving
:w - save
Run Code Online (Sandbox Code Playgroud)

以下是更多信息的链接:

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

回顾一下,如果您将使用 unix vim 是非常基础的。我听说学习vim就像学习打字。它是您可以学习的下一个最有用的编程工具。

(为了避免编辑器战争,您也可以查看 emacs 或其他编辑器,但我个人更喜欢 vim)

  • 仅供参考,在很多系统上,`view` 是`vim -R` 的别名。 (10认同)
  • 当你有一个几百兆的文件时,比如一个巨大的 XML 文件,你真的更喜欢使用 `less` 而不是在 Vim、Emacs 或任何其他编辑器中打开文件。这就是在“less”中打开文件的全部意义所在。您还可以像在 Vim 中那样在 `less` 中执行文本搜索,顺便说一句。 (3认同)

Lor*_*nzo 10

我也在寻找这个并使用 Vim 找到了另一个解决方案:http : //ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/

这篇文章相当陈旧,所以现在在更新的发行版中发布了 vim 7.2,并且 .bashrc 将显示: alias vless='vim -u /usr/share/vim/vim72/macros/less.vim'

  • 这个特性在 Vim 中的 [`:help less`](http://vimhelp.appspot.com/various.txt.html#less) 下有记录 (2认同)

小智 8

我很高兴地宣布一个新包e2ansi,它为more和 等寻呼机提供语法高亮支持less

该包使用所有文本编辑器之母Emacs来执行实际的语法突出显示。作为一个额外的好处,通常由 Emacs 执行的所有其他转换——比如解压缩文件——也会被执行。

例子

以下是使用lessand 查看文件的结果e2ansi

例子

配置

该软件包提供了一个命令行工具e2ansi-cat,它以批处理模式启动 Emacs,打开文件,语法高亮它们,并使用 ANSI 序列呈现结果。

例如,您可以less通过将以下变量设置为(您的 init 文件的位置可能会有所不同)来将其集成到其中:

export "LESSOPEN=||-/usr/local/emacs --batch -Q -l ~/.emacs -l bin/e2ansi-cat %s"
export "LESS=-r"
alias "more=less -X -E"
Run Code Online (Sandbox Code Playgroud)

在上面的配置中,less恢复原始终端窗口内容,而more只是在提示后输出新内容。

注意:如果您使用旧版本的less,它可能不支持 ||-语法,在这种情况下,您可能需要简单地使用 LESSOPEN=|/usr/local/emacs ...

less在管道中使用

in 中的“-”字符LESSOPEN表示在将文本传送到less. 在这种情况下,Emacs 只能依赖文本本身(而不是文件名)。幸运的是,Emacs 为此提供了一个系统。此外,提供的文件文件 e2ansi-magic.el设置了其他文件类型。例如:

管道示例

为什么要使用 Emacs?

  • Emacs 支持几乎所有的编程语言和结构化文本格式。在大多数情况下,语法高亮支持非常好。
  • 您可以轻松添加对更多语言和格式的支持,或修改现有包以满足您的需要。
  • Emacs 支持颜色主题。使用时e2ansi,主题中的颜色在查看less. 您可以从多种来源中选择合适的颜色主题,也可以自行设计。
  • 如果您使用 Emacs 作为您选择的编辑器,您将在编辑器中获得与使用查看文件时相同的高亮显示 less(减去 ANSI 序列格式和终端窗口的限制)。
  • less将利用执行自动转换的 Emacs 功能,例如解压缩文件。事实上,您可以教 Emacs 执行任何类型的转换,例如使用外部工具自动将二进制文件转换为人类可读的格式。
  • 您可以使用 Emacs 的远程访问语法(如/USER@HOST:FILENAME.

有用的链接

操作系统注意事项

  • 在 MS Windows 上,控制台本身不支持 ANSI 序列。幸运的是,less应用程序能够呈现它们。我不知道lessMS Windows的任何当代二进制分发版,并且提供的构建文件很难使用。幸运的是,less使用CMake很容易构建,有关详细信息,请参阅此文本

  • OS X 分发了一个古老版本的less. 幸运的是,直接从源代码构建现代版本很容易。


小智 7

如果您安装了GNU Source-highlight,您可以使用以下命令来突出显示单个文件的语法:

$ src-hilite-lesspipe.sh yourfile.xml | less -R
Run Code Online (Sandbox Code Playgroud)