实际上我正在使用此命令来打开xml文件(有时是一系列文件)
less htmleditors/htmleditors_config.xml
或
less [multiple files]
我想留在Less(为了更好地学习该程序并运用我对:n和:p用于下一个/上一个导航)
但是它还需要某种基本的语法突出显示–至少以不同的方式显示注释。你知道有什么办法吗?
#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,它为more
和less
等传呼机提供语法高亮显示支持。 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 楼
我遇到了同样的问题,我听到了,阅读了所有答案,以下是我每次使用less
或most
时都要突出显示语法的内容:sudo apt install source-highlight
我为less
和most
创建了一个别名(我使用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
评论
可能是您问题的解决方案,而不是您问题的答案:摩尔寻呼机开箱即用突出显示语法,并且具有不太兼容的键绑定:github.com/walles/moar。免责声明:我写了自己的磨床,所以我当然喜欢它。