有没有一种语法来突出显示我在Less中看到的文件?

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

less htmleditors/htmleditors_config.xml




less [multiple files]


我想留在Less(为了更好地学习该程序并运用我对:n和:p用于下一个/上一个导航)

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

评论

可能是您问题的解决方案,而不是您问题的答案:摩尔寻呼机开箱即用突出显示语法,并且具有不太兼容的键绑定:github.com/walles/moar。免责声明:我写了自己的磨床,所以我当然喜欢它。

#1 楼

您可以使用GNU的source-highlight,如下所示(路径可能有所不同,请参见下文):

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


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



Debian:

sudo apt install libsource-highlight-common source-highlight
dpkg -L libsource-highlight-common | grep lesspipe
# /usr/share/source-highlight/src-hilite-lesspipe.sh



Fedora:

sudo dnf install source-highlight
rpm -ql source-highlight | grep lesspipe
# /usr/bin/source-highlight/src-hilite-lesspipe.sh




评论


我在少运行〜/ .zshrc时检索以下错误消息。错误:src-hilite-lesspipe.sh:第9行:source-highlight:找不到命令。我在MacOSX上运行它。

– JJD
2012年6月4日下午16:38

@JJD您安装了source-highlight吗?

– Max Nanasy
2012年8月31日下午6:00

OSX:brew install源-突出显示;导出LESSOPEN =“ | /usr/local/bin/src-hilite-lesspipe.sh%s”。注意路径更改。

– Gregg Lind
2014年4月22日在19:26

在Debian上:sudo apt-get install source-highlight,导出LESSOPEN =“ | /usr/share/source-highlight/src-hilite-lesspipe.sh%s”,导出LESS ='-R'

–摩根·库尔贝(Morgan Courbet)
2014年8月22日在8:57

小警告:source-highlight当前不支持降价促销。

– dhulihan
16年7月7日在6:10



#2 楼

最好的上述两个答案:您可以通过按v键从更少的范围内调用系统默认编辑器。

评论


哇!这非常有用!

– StackExchange令人不安
2012年8月9日下午5:57

在我的Ubuntu盒子上打开Nano的诅咒!

–詹姆斯
13年1月18日在10:12

然后将$ EDITOR或$ VISUAL设置为vim(或emacs或gedit或joe或ed或mined或…)。

–丹尼尔·H
13年6月5日,下午1:42

@jamesc仅供参考,您可以在Nano中启用语法高亮显示,方法如下。

–曼上尉
16年4月14日在19:00

@CaptainMan Nope nope nope!我像Daniel H所说的那样将默认值改回vim! :D

–詹姆斯
16年4月15日在15:23

#3 楼

pygmentize somefile.ex | less -R




function cless () {
    pygmentize -f terminal "" | less -R
}


Pygmentize是Pygments Python语法高级版本的一部分。

评论


pygmentize也可以与此处其他答案中提到的LESSOPEN东西一起使用。

–内森(Nathan)
14年8月5日在19:01

要获取pygmentize,您需要使用Python,然后可以使用pip install pygments安装pygmentize。

– wkschwartz
2015年3月20日,1:11

为了减少使用pygmentize进行语法高亮的使用,请使用:pygmentize 2> / dev / null>&2 && export LESSOPEN =“ | pygmentize -g -f terminal256%s”。 -g使它与管道一起工作(<(diff -u file1个文件较少))。它在arch / linux的community / pygmentize软件包中可用,在debian的python-pygments中可用。

–x-yuri
15年5月16日在18:38



我喜欢pygmentize的输出,但是发现它太慢了。我想出了这个答案,它更快但仍然是256色漂亮。

–汤姆·黑尔
18年6月17日在16:44

您还可以先通过管道进行pygmentize,例如猫myfile | pygmentize |少-R

– Tasos Papastylianou
19年11月12日在19:37

#4 楼

正如其他人所说,您可以使用vim的力量。但重要的是,您无需学习如何使用vi / vim就可以这样做。

Vim带有less.vim脚本,该脚本可以很好地替代更少的脚本,并具有全彩色语法突出显示功能。它使用less键绑定(只需按“ q”退出)。

它有一些问题,因此我对其进行了改进。这是我在博客上发布的屏幕截图(存档于2013-04-09;原始抛出503):



评论


太棒了!但是由于我无法立即找到该脚本,因此我想共享查找该脚本的命令:find / usr / share / vim -name'less.sh',摘自以下要点:gist.github.com/昌西-加勒特/ 9773770

– nuala
15年2月21日在22:13

添加到@yoshi的注释中,以快速添加vimless命令(遵循vimdiff的命名法),请执行:ln -s $(find / usr / share / vim -name'less.sh')/ usr / local / bin / vimless

–waldyrious
16/12/27在12:31

链接是404!

–助剂
18年6月22日在9:24

@acgtyrant应该立即修复;值得庆幸的是,Internet档案馆拥有它。

– bb010g
19年4月19日在18:39

#5 楼

我认为您应该使用文本编辑器。我自己喜欢vim。当您查看文件时,这将为您提供很多功能,然后当您要编辑它们时,您将已经知道一些基本知识。

使用文本编辑器(尤其是vim)有一些优点:


语法突出显示
强大的移动命令
查找
跳转到文件中的特定位置(称为标记)
折叠(仅在您想要查看功能块时有用)

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

vim -R <file name>


这里是基本的导航指南:

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


这里是更多信息的链接:

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

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

(为避免编辑大战,您也可以研究emacs或其他编辑器,但是我个人更喜欢vim)

评论


我第二。 Vim的启动速度要慢得多,并且许多键盘快捷键(例如,搜索,下一页,上一页)是相同的。

–杰里米·谢尔曼(Jeremy W. Sherman)
2011-02-10 18:20

仅供参考,在许多系统上,视图是vim -R的别名。

–安德鲁·费里尔(Andrew Ferrier)
2012-09-18 13:12

当您拥有一个数百兆字节的文件(例如一个巨大的XML文件)时,您真的更愿意使用更少的文件,而不是在Vim,Emacs或任何其他编辑器中打开该文件。这就是用更少的时间打开文件的全部目的。您也可以像在Vim,BTW中那样以更少的方式执行文本搜索。

–JoséL.Patiño
20-1-17在11:22



#6 楼

我也在搜索此内容,并找到了使用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'

评论


MacVim带有一个可以直接使用的shell脚本,位于/Applications/MacVim.app/Contents/Resources/vim/runtime/macros/less.sh

–尼克
2012年1月14日19:23

Vim本身在:help less下记录了此功能。

– joeytwiddle
18-2-3在16:20



#7 楼

我很高兴地宣布一个新的软件包e2ansi,它为moreless等传呼机提供
语法高亮显示支持。 br />执行实际的语法突出显示。另外,还执行了Emacs通常执行的所有其他
转换-如解压缩文件-


示例

以下内容是使用less
e2ansi查看文件的结果:



配置

该软件包提供了命令行工具e2ansi-cat以批处理模式启动
Emacs,打开文件,语法突出显示它们,并使用ANSI序列呈现结果
。您可以通过设置以下变量将其集成到less中例如,
(初始化文件的位置可能有所不同):

export "LESSOPEN=||-/usr/local/emacs --batch -Q -l ~/.emacs -l bin/e2ansi-cat %s"
export "LESS=-r"
alias "more=less -X -E"


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

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

在管道中使用less

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

为什么要使用Emacs?


Emacs几乎支持所有编程语言,并且
结构化文字格式。在大多数情况下,语法突出显示
支持非常好。
您可以轻松添加对更多语言和格式的支持,或修改
现有的软件包可以满足您的需求。
Emacs支持颜色主题。使用e2ansi时,在less中查看文件时,会保留
主题中的颜色。您可以从许多来源中选择
合适的颜色主题,也可以设计自己的主题。
如果使用Emacs作为您选择的编辑器,则在编辑器中将获得与
相同的突出显示。使用
less(在ANSI序列格式和终端
窗口中的负限制)查看文件时,您会得到。

less将利用执行自动功能的Emacs功能
转换,例如解压缩文件。实际上,您可以教导
Emacs执行任何类型的转换,例如使用外部工具将
二进制文件自动转换为人类可读形式。
您可以使用查看其他计算机上的文件Emacs的语法
用于/USER@HOST:FILENAME之类的远程访问。

有用的链接



e2ansi分布在Melpa上,可以使用
标准Emacs软件包系统

e2ansi托管在GitHub

Emacs Wiki上的e2ansi页面

less的主页。

操作系统说明


在MS Windows上,该控制台本身不支持ANSI序列。幸运的是,less应用程序能够呈现它们。我
不知道用于MS Windows的less的任何当代二进制发行版,因此很难使用提供的生成文件。幸运的是,
使用CMake可以轻松构建less,有关详细信息,请参见此文本。
OS X发行了less的较早版本。幸运的是,
直接从源代码构建现代版本很容易。


评论


对于OS X,我建议将软件包管理器brew [brew.sh/]与brew dupes [github.com/Homebrew/homebrew-dupes]结合使用,以安装更新版本的东西。

– drevicko
16 Jan 26'在10:53



“由emacs驱动”-运行整个VM只是为了查看文件? ;-)和+1

–阿洛瓦·马哈德(Alois Mahdal)
17-10-19在23:58



#8 楼

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

$ src-hilite-lesspipe.sh yourfile.xml | less -R


评论


src-hilite-lesspipe.sh是否也可以通过管道接收输入?

–waldyrious
16 Dec 27'在12:42

#9 楼

source-highlight.sh中有一​​个/usr/share/source-highlight/*.sh脚本。我在hcat中创建了名称为/usr/bin的符号链接。

它在端子(控制台)中显示了突出显示的输出– hcat被突出显示了类别。

如何:

[me@this]<bash><~> 43 
21:23 Fri Apr 19 > sudo apt-get install source-highlight

[me@this]<bash><~> 28 
21:03 Fri Apr 19 > ll /usr/share/source-highlight/*.sh
-rwxr-xr-x 1 root root 432 May  1  2012 /usr/share/source-highlight/src-hilite-lesspipe.sh*

[me@this]<bash><~> 29 
21:04 Fri Apr 19 > sudo su
root@this:/home/me# cd /usr/bin/
root@this:/usr/bin# ln -s /usr/share/source-highlight/src-hilite-lesspipe.sh hcat

[me@this]<bash><~> 36 
21:07 Fri Apr 19 > hcat test.xml


#10 楼

使用OS X 10.9(Maverick)可以解决问题:


brew install source-highlight(假设安装了brew-http://brew.sh)

sudo nano /etc/launchd.conf


setenv LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"     
setenv LESS=' -R '



(添加到/etc/launchd.conf中)

重新启动


#11 楼

我发现了highlight,它:


支持多种配色方案和256色
在STDIN上工作(不同于source-highlight
pygmentize快得多




这是一个我称为highlight-less-wrapper的脚本,其中包括.bashrc有关如何设置less使其自动使用的说明。

#!/bin/bash

# Have highlight read from STDIN if '-' is given as filename

# Setup - Add to .bashrc:
# LESSOPEN='|-highlight-less-wrapper "%s"'
# export LESS=-FMRXis

# Usage:
# $ less file
# OR
# $ pipeline | less

warn () { printf "%s: %s\n" "$(basename "q4312078q")" "$*" 1>&2; }
die () { warn "$@"; exit 1; }

# Argument checking
case $# in
    0)
        # Allow `exec q4312078q` for less setup
        echo "LESSOPEN='|-$(readlink -f "q4312078q") "'"%s"'\'
        exit 255 ;;
    1)
        # Only one argument is expected.
        # less will invoke multiple times given multiple files.
        file=
        if [[ $file != - && ! -r $file ]]; then  # less passes '-' for STDIN
            die "Cannot open $file for reading"
        fi ;;
    *)
        die "Expected only one argument" ;;
esac

# Run highlight
# highlight will read from STDIN when given a null filename
run_highlight () {
    highlight --force -O truecolor --style aiseered ""
}

if [[ $file == - ]]; then  # Run on stdin
    run_highlight ""
else
    run_highlight "$file"
fi


#12 楼

安装GNU的源代码高亮(sabayon / gentoo上的软件包dev-util/source-highlight)后,我在/etc/bash/bashrc.d/my-less-src-highlight中配置了这些env:

#default:    export LESSOPEN="|lesspipe %s"
#don't like: export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
#default:    export LESS=" -R -M --shift 5"
export LESSCOLOR=always
export LESSCOLORIZER=/usr/bin/src-hilite-lesspipe.sh


我不喜欢替换lesspipe,因为那有其他特征。串联无效。

#13 楼

在Mac中,您只需键入view filename,即可完成类似的操作。

评论


在OSX中,默认情况下,视图文件名仅启动vim-按键绑定稍有不同(请参阅此问题的其他答案以获取更多详细信息)。

– drevicko
16 Jan 26'在10:56



#14 楼

如果要在Vim中使用相同的语法突出显示,但是由于某些原因,您更喜欢使用less作为寻呼机,则可以使用以下脚本:https://github.com/rkitover/vimpager

基本用法是:

vimpager file.txt




vimcat file.ext | less -R


您可以使用-c传递额外的命令,不在您的.vimrc中(例如,选择其他颜色方案)。我使用的完整命令是:

vimcat -c 'set cmdheight=20' -c 'hi! clear Normal' -o - "$FILENAME" | less -REXS


当心:如果Vim启动时要求您按Enter键,则不会看到提示,但是什么都不会直到您按Enter键!上面的cmdheight技巧可以帮助缓解这种情况。

#15 楼

我遇到了同样的问题,我听到了,阅读了所有答案,以下是我每次使用lessmost时都要突出显示语法的内容:

sudo apt install source-highlight
我为lessmost创建了一个别名(我使用ZSH,但如果使用bash,则可以为.bashrc文件添加别名):

vim ~/.zshrc


(对于那些可能会卡在vim中的用户:按i进入编辑模式,完成后按Esc然后::x然后最后是
回车以保存更改)

并粘贴以下内容基于Debian的发行版(如Debian,Ubuntu,Mint等)的行:

alias most='AliasFuncLess() { unset -f AliasFuncLess; $(dpkg -L libsource-highlight-common | grep lesspipe) "" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(dpkg -L libsource-highlight-common | grep lesspipe) "" | most };AliasFuncMost'


或RPM发行版(Redhat,Fedora,Centos):

alias most='AliasFuncLess() { unset -f AliasFuncLess; $(rpm -ql source-highlight | grep lesspipe) "" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(rpm -ql source-highlight | grep lesspipe) "" | most };AliasFuncMost'


请记住要关闭终端并再次打开以确保已创建别名。

现在您可以享受颜色了:

most yourFile.xml