有没有办法语法突出显示我在Less中看到的文件?
实际上我正在使用此命令打开一个xml文件(有时是一系列文件)
less htmleditors/htmleditors_config.xml
要么
less [multiple files]
我想留在Less(更好地学习该程序并使用我的知识:n和:p用于下一个/上一个导航)
但它也需要某种基本的语法突出显示 - 至少以不同方式显示注释。你知道怎么办?
有没有办法语法突出显示我在Less中看到的文件?
实际上我正在使用此命令打开一个xml文件(有时是一系列文件)
less htmleditors/htmleditors_config.xml
要么
less [multiple files]
我想留在Less(更好地学习该程序并使用我的知识:n和:p用于下一个/上一个导航)
但它也需要某种基本的语法突出显示 - 至少以不同方式显示注释。你知道怎么办?
Answers:
您可以使用GNU的源亮点,如在这里(路径可能会有所不同,见下文):
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
brew install source-highlight
; export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"
。请注意路径更改。
sudo apt-get install source-highlight
export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s"
export LESS=' -R '
以前的答案中最好的一个:你可以通过按下来从更少的内部调用系统默认编辑器v。
pygmentize somefile.ex | less -R
要么
function cless () {
pygmentize -f terminal "$1" | less -R
}
Pygmentize是Pygments Python语法highliter的一部分。
pygmentize
也适用LESSOPEN
于其他答案中提到的东西。
pygmentize
你需要的Python,然后就可以安装pygmentize
使用pip install pygments
。
less
使用pygmentize
语法高亮使用:which pygmentize 2> /dev/null >&2 && export LESSOPEN="| pygmentize -g -f terminal256 %s"
。-g
使它与管道(less <(diff -u file1 files)
)一起工作。这是在现有community/pygmentize
包arch linux
,并python-pygments
为debian
。
我认为你应该使用文本编辑器。我自己喜欢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)
view
是因为在很多系统上,它是别名vim -R
。
正如其他人所说,你可以使用vim的力量。但重要的是,您可以在不学习如何使用vi / vim的情况下这样做。
Vim附带了一个less.vim
脚本,可以很好地替代较少的脚本,全彩色语法高亮显示。它使用less
键绑定(只需点击'q'即可退出)。
find /usr/share/vim -name 'less.sh'
这取自这个要点:gist.github.com/chauncey-garrett/9773770
vimless
命令(遵循命名法vimdiff
),做:ln -s $(find /usr/share/vim -name 'less.sh') /usr/local/bin/vimless
我也在寻找这个,并找到了使用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'
:help less
我很高兴地宣布一个新的软件包e2ansi,它为像more
和的寻呼机提供语法高亮支持less
。
该软件包使用所有文本编辑器的母亲Emacs来执行实际的语法突出显示。作为额外的奖励,通常由Emacs执行的所有其他转换(如解压缩文件)也会执行。
以下是使用less
和
查看文件的结果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"
在上面的配置中,less
恢复原始终端窗口内容,而more
在提示后简单地输出新内容。
注意:如果您使用旧版本less
,它可能不支持
||
或-
语法,在这种情况下您可能需要简单地使用
LESSOPEN=|/usr/local/emacs ...
。
less
在管道中使用“ - ”字符LESSOPEN
表示在将文本输入时也应使用输入过滤器less
。在这种情况下,Emacs只能依赖文本本身(而不是文件名)。幸运的是,Emacs为此提供了一个系统。此外,提供的文件文件
e2ansi-magic.el
设置其他文件类型。例如:
e2ansi
,在查看文件时保留主题中的颜色less
。您可以从众多来源中选择合适的颜色主题,也可以自行设计。less
(使用ANSI序列格式和终端窗口中的减去限制时)获得的相同突出显示
。less
将利用执行自动转换的Emacs功能,例如解压缩文件。实际上,您可以教Emacs执行任何类型的转换,例如使用外部工具自动将二进制文件转换为人类可读的形式。/USER@HOST:FILENAME
。less
。
如果安装了GNU Source-highlight,则可以使用以下命令突出显示单个文件的语法:
$ src-hilite-lesspipe.sh yourfile.xml | less -R
src-hilite-lesspipe.sh
通过管道接收输入?
source-highlight
有一个.sh
脚本位于/usr/share/source-highlight/*.sh
。我创建了一个符号链接到它的名字hcat
在/usr/bin
。
它显示终端(控制台)中突出显示的输出 - hcat
突出显示cat。
如何:
[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
使用OS X 10.9(Maverick)这可以解决问题:
sudo nano /etc/launchd.conf
setenv LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s" setenv LESS=' -R '
(添加到/etc/launchd.conf)
重启
在mac中,你可以输入view filename
,做类似的事情就像少。
view filename
启动vim
- 稍微不同的键绑定less
(有关更多详细信息,请参阅此问题的其他答案)。
在安装GNU的source-highlight(dev-util/source-highlight
sabayon / gentoo上的包)后,我将这些env配置为/etc/bash/bashrc.d/my-less-src-highlight
:
#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
因为它有其他功能。连接不起作用。
如果你想要在Vim中使用相同的语法高亮,但出于某种原因你更喜欢less
用作你的寻呼机,你可以使用这个脚本:https://github.com/rkitover/vimpager
基本用法是:
vimpager file.txt
要么
vimcat file.ext | less -R
您可以使用-c
传递不在您的额外命令.vimrc
(例如,选择不同的colorscheme)。我使用的完整命令是:
vimcat -c 'set cmdheight=20' -c 'hi! clear Normal' -o - "$FILENAME" | less -REXS
注意:如果你的Vim在启动时要求你按Enter键,你将看不到提示,但是在按Enter键之前什么都不会发生!cmdheight
上面的诀窍可以帮助减轻这种情况。
我找到了highlight
哪个:
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 "$0")" "$*" 1>&2; }
die () { warn "$@"; exit 1; }
# Argument checking
case $# in
0)
# Allow `exec $0` for less setup
echo "LESSOPEN='|-$(readlink -f "$0") "'"%s"'\'
exit 255 ;;
1)
# Only one argument is expected.
# less will invoke multiple times given multiple files.
file=$1
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 "$1"
}
if [[ $file == - ]]; then # Run on stdin
run_highlight ""
else
run_highlight "$file"
fi
我有同样的问题,我登陆听到,阅读所有答案,以下是我最终做的每次使用时都有语法突出显示less
或most
:
sudo apt install source-highlight
然后我去创造一个别名为我less
和most
(我使用ZSH,但你可以为你添加别名.bashrc
,如果你使用bash文件):
vim ~/.zshrc
(对于那些谁可能会卡在VIM:按i进入编辑模式,当您完成后,按Esc,然后:再x最后 Enter保存修改)
并粘贴以下行为基于debian的发行版(如Debian,Ubuntu,Mint等):
alias most='AliasFuncLess() { unset -f AliasFuncLess; $(dpkg -L libsource-highlight-common | grep lesspipe) "$1" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(dpkg -L libsource-highlight-common | grep lesspipe) "$1" | most };AliasFuncMost'
或者用于RPM发行版(Redhat,Fedora,Centos):
alias most='AliasFuncLess() { unset -f AliasFuncLess; $(rpm -ql source-highlight | grep lesspipe) "$1" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(rpm -ql source-highlight | grep lesspipe) "$1" | most };AliasFuncMost'
请记住关闭终端并再次打开以确保创建别名。
现在你可以享受颜色:
most yourFile.xml
less ~/.zshrc
。错误:src-hilite-lesspipe.sh: line 9: source-highlight: command not found
。我在MacOSX上运行它。