कम से वाक्य रचना को कैसे हाइलाइट करें


133

क्या मैं कम में देखी गई फ़ाइल को सिंटैक्स हाइलाइट करने का तरीका है?

वास्तव में मैं xml फ़ाइल खोलने के लिए इस कमांड का उपयोग कर रहा हूं (और कभी-कभी उनमें से एक श्रृंखला)

less htmleditors/htmleditors_config.xml

या

less [multiple files]

मैं कम में रहना चाहता हूं (उस कार्यक्रम को बेहतर ढंग से जानने के लिए और अगले / पिछले नेविगेशन के लिए: n और: p के मेरे ज्ञान का उपयोग करने के लिए)

लेकिन यह कुछ प्रकार के मूल वाक्यविन्यास को भी उजागर करना चाहता है - कम से कम टिप्पणियों को अलग तरह से दिखाएं। क्या आप इसे करने का कोई तरीका जानते हैं?

जवाबों:


123

आप GNU के स्रोत-हाइलाइट का उपयोग कर सकते हैं , जैसा कि यहाँ दिखाया गया है (पथ भिन्न हो सकता है, नीचे देखें):

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

डेबियन स्ट्रेच और फेडोरा 25 के रूप में, पैकेज के नाम और स्क्रिप्ट पथ अलग-अलग हैं

  • डेबियन:

    sudo apt install libsource-highlight-common source-highlight
    dpkg -L libsource-highlight-common | grep lesspipe
    # /usr/share/source-highlight/src-hilite-lesspipe.sh
    
  • फेडोरा:

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

जब मैं चलता हूं तो मैं निम्नलिखित त्रुटि संदेश प्राप्त करता हूं less ~/.zshrc। त्रुटि: src-hilite-lesspipe.sh: line 9: source-highlight: command not found। मैं इसे MacOSX पर चलाता हूं।
JJD

2
@JJD क्या आपने स्रोत-हाइलाइट स्थापित किया है?
मैक्स नानसी

13
OSX brew install source-highlight:; export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"। पथ परिवर्तन पर ध्यान दें।
ग्रीग लिंड

23
डेबियन पर: sudo apt-get install source-highlight, export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s",export LESS=' -R '
मॉर्गन कुर्बत

3
छोटा चेतावनी: स्रोत-हाइलाइट वर्तमान में मार्कडाउन का समर्थन नहीं करता है।
धुलिहान

97

दोनों पिछले उत्तरों में से सर्वश्रेष्ठ: आप सिस्टम डिफ़ॉल्ट संपादक को कम से कम दबाकर, लागू कर सकते हैं v


3
वाह! यह आश्चर्यजनक रूप से उपयोगी है!
5

13
मेरे उबंटू बॉक्स पर नैनो खोलने वाली शाप!

5
फिर $ EDITOR या $ VISUAL को vim (या emacs, या gedit, या joe, या ed, या mined, या…) पर सेट करें।
डैनियल एच

@jamesc FYI करें, आप नैनो में सिंटैक्स हाइलाइटिंग को सक्षम कर सकते हैं, यहां बताया गया है कि कैसे।
कप्तान मैन

@CaptainMan नहींं, नहीं! मैं डिफ़ॉल्ट को वापस बदल देता हूं जैसे कि डैनियल एच ने कहा था! : D
jamesc

33
pygmentize somefile.ex | less -R

या

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

पाइगेटाइज Py Pyon सिंटैक्स हाइलाइटर के एक भाग के रूप में आता है ।


3
pygmentizeLESSOPENयहाँ अन्य उत्तर में वर्णित सामान के साथ भी काम करता है।
नाथन

2
प्राप्त करने के लिए pygmentize, आपको पायथन की आवश्यकता है और फिर आप के pygmentizeसाथ स्थापित कर सकते हैं pip install pygments
wkschwartz

3
प्राप्त करने के लिए 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
x- यूरी

मुझे इसका आउटपुट पसंद है pygmentize, लेकिन यह बहुत धीमा है। मैं इस जवाब के साथ आया था जो तेज है और अभी भी 256-रंग का सुंदर है।
टॉम हेल

16

मुझे लगता है कि आपको एक टेक्स्ट एडिटर का उपयोग करना चाहिए। मुझे खुद को पसंद है। फ़ाइलों को देखने के दौरान आपको बहुत सारी शक्ति मिलेगी और फिर जब आप उन्हें संपादित करना चाहेंगे तो आपको पहले से ही मूल बातें पता चल जाएंगी।

यहाँ एक पाठ संपादक (विशेष रूप से विम) का उपयोग करने के कुछ फायदे हैं:

  • वाक्य - विन्यास पर प्रकाश डालना
  • शक्तिशाली आंदोलन आदेश
  • खोज
  • फ़ाइल में विशिष्ट स्थान पर जाएं (एक निशान कहा जाता है)
  • तह (उपयोगी जब आप सिर्फ फ़ंक्शन स्टब देखना चाहते हैं)

अपनी फ़ाइल को आसानी से खोलने के लिए इसका उपयोग करें:

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

बस पुनरावृत्ति करने के लिए, यदि आप यूनिक्स का उपयोग करेंगे vim बहुत मौलिक है। मैंने सुना है कि विम सीखना टाइप करने के लिए सीखने जैसा है। यह अगला सबसे उपयोगी उपकरण है जिसे आप प्रोग्रामिंग के लिए सीख सकते हैं।

(सिर्फ संपादक युद्धों से बचने के लिए आप ईमैक या किसी अन्य संपादक पर नज़र डाल सकते हैं, हालाँकि मैं व्यक्तिगत रूप से पसंद करता हूँ )


1
मैं इसके समर्थन में हूं। विम कम के रूप में तेजी से शुरू होता है, और कीबोर्ड के कई शॉर्टकट (जैसे, खोज, अगले पृष्ठ, पिछले पृष्ठ) समान हैं।
जेरेमी डब्ल्यू। शेरमैन

10
बहुत सारे सिस्टम पर सिर्फ FYI करना, के viewलिए एक अन्य नाम है vim -R
एंड्रयू फेरियर

15

जैसा कि दूसरों ने कहा है, आप विम की शक्ति का उपयोग कर सकते हैं। लेकिन महत्वपूर्ण बात, आप ऐसा करना सीख सकते हैं कि vi / vim का उपयोग कैसे करें।

विम एक less.vimस्क्रिप्ट के साथ आता है जो कम से कम प्रतिस्थापन के लिए पूरी तरह से रंग सिंटैक्स हाइलाइटिंग के साथ काम करता है। यह lessकीबाइंडिंग का उपयोग करता है (बस छोड़ने के लिए 'q' मारा)।

इसकी कुछ समस्याएं थीं, इसलिए मैंने इसमें सुधार किया । यहाँ मेरे ब्लॉग पोस्ट से एक स्क्रीनशॉट है (2013-04-09 को संग्रहीत; मूल फेंकता 503):

https://github.com/huyz/less.vim का स्क्रीनशॉट


2
बहुत बढ़िया! लेकिन जैसा कि मुझे स्क्रिप्ट ठीक से नहीं मिली, मैं इसे साझा करने के लिए कमांड साझा करना चाहता हूं: find /usr/share/vim -name 'less.sh'जो इस जिस्ट
nuala

@ योशी की टिप्पणी को जोड़ते हुए, जल्दी से एक vimlessकमांड (नामकरण के बाद vimdiff) जोड़ने के लिए , करें:ln -s $(find /usr/share/vim -name 'less.sh') /usr/local/bin/vimless
वाल्डिएरियस

लिंक 404 है!
अक्जेंट्री

@acgtyrant अब तय किया जाना चाहिए; इंटरनेट आर्काइव में शुक्र है।
bb010g

10

मैं यह भी खोज रहा था और विम का उपयोग कर एक और समाधान पाया: http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/

यह पोस्ट पुराना है, इसलिए अब अधिक हाल के डिस्ट्रोस vim 7.2 पर भेज दिया गया है और .bashrc पढ़ेगा: उर्फ ​​vless = 'vim -u /usr/share/vim/vim72/macros/less.vim'।


1
MacVim एक शेल स्क्रिप्ट के साथ आता है जिसे आप सीधे उपयोग कर सकते हैं: /Applications/MacVim.app/Contents/Resources/vim/runtime/macros/less.sh
Nick

1
यह सुविधा Vim में ही प्रलेखित है:help less
joeytwiddle

8

मुझे एक नए पैकेज की घोषणा करते हुए खुशी हो रही है, e2ansi , जो कि जैसे पेजर्स के लिए सिंटैक्स हाइलाइटिंग समर्थन प्रदान करता है moreऔर less

पैकेज सभी पाठ संपादकों की माँ का उपयोग करता है, Emacs , वास्तविक वाक्यविन्यास हाइलाइटिंग करने के लिए। एक अतिरिक्त बोनस के रूप में, Emacs द्वारा सामान्य रूप से प्रदर्शन की जाने वाली अन्य सभी रूपांतरण - जैसे कि फाइलों को अनकैप्स करना - भी किया जाता है।

उदाहरण

निम्नलिखित एक फ़ाइल को देखने का उपयोग कर का परिणाम है lessऔर e2ansi:

उदाहरण

विन्यास

पैकेज कमांड-लाइन टूल प्रदान करता है e2ansi-catजो एमएसीएस को बैच मोड में शुरू करता है, फाइलें खोलता है, सिंटैक्स उन्हें हाइलाइट करता है, और एएनएसआई अनुक्रमों का उपयोग करके परिणाम प्रदान करता है।

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

उपयोगी कड़ियाँ

  • e2ansiMelpa पर वितरित किया जाता है और मानक Emacs पैकेज सिस्टम का उपयोग करके स्थापित किया जा सकता है
  • e2ansiGitHub पर होस्ट किया गया है
  • e2ansiपर पेज Emacs विकी
  • का घर less

ऑपरेटिंग सिस्टम नोट्स

  • एमएस विंडोज पर, कंसोल मूल रूप से एएनएसआई अनुक्रमों का समर्थन नहीं करता है। सौभाग्य से, lessएप्लिकेशन उन्हें प्रदान करने में सक्षम है। मुझे lessएमएस विंडोज के लिए किसी भी समकालीन बाइनरी वितरण के बारे में पता नहीं है और प्रदान की गई फ़ाइलों का उपयोग करना मुश्किल है। सौभाग्य से, CMake का lessउपयोग करके निर्माण करना आसान है , विवरण के लिए इस पाठ को देखें।

  • OS X एक प्राचीन संस्करण वितरित करता है less। सौभाग्य से, स्रोत से सीधे आधुनिक संस्करण का निर्माण करना आसान है।


ओएस एक्स के लिए, मैं पैकेज प्रबंधक का उपयोग की सलाह देते हैं काढ़ा [ brew.sh/] के साथ काढ़ा ड्यूप्स [ github.com/Homebrew/homebrew-dupes] जैसी चीजों के अप-टू-डेट संस्करण स्थापित करने के लिए less
ड्रेविको

"emacs द्वारा संचालित" - पूरे वीएम को केवल एक फ़ाइल को देखने के लिए चल रहा है? ;-) और +1
एलोइस महदाल

6

यदि आपके पास जीएनयू स्रोत-हाइलाइट स्थापित है, तो आप एकल फ़ाइल के सिंटैक्स को उजागर करने के लिए निम्न कमांड का उपयोग कर सकते हैं:

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

src-hilite-lesspipe.shपाइप के माध्यम से भी इनपुट प्राप्त कर सकते हैं?
वॉलीड्रिअस

2

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

2

OS X 10.9 (Maverick) का उपयोग करना इस चाल को करेगा:

  • काढ़ा स्थापित स्रोत-हाइलाइट (मान लीजिए काढ़ा स्थापित है - http://brew.sh )
  • सुडो नैनो /etc/launchd.conf

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

    (/Etc/launchd.conf में जोड़ें)

  • रिबूट


0

मैक में, आप बस टाइप कर सकते हैं view filename, कम समान काम करता है।


1
OSX के साथ, view filenameबस vimडिफ़ॉल्ट रूप से लॉन्च किया जाता है - अधिक भिन्न बाइंडिंग less(अधिक विवरण के लिए इस प्रश्न के अन्य उत्तर देखें)।
ड्रेविको

0

जीएनयू के स्रोत-हाइलाइट ( dev-util/source-highlightसबयोन / जेंटू पर पैकेज ) स्थापित करने के बाद , मैंने उन एनवीएस को कॉन्फ़िगर किया /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क्योंकि इसमें अन्य विशेषताएं हैं। कॉनटेनटेशन काम नहीं करता था।


0

यदि आप वही सिंटैक्स हाइलाइट करना चाहते हैं जो आप विम में उपयोग करते हैं , लेकिन किसी कारण से आप lessअपने पेजर के रूप में उपयोग करना पसंद करते हैं , तो आप इस स्क्रिप्ट का उपयोग कर सकते हैं: https://github.com/rkitover/vimpager

मूल उपयोग होगा:

vimpager file.txt

या

vimcat file.ext | less -R

आप -cअतिरिक्त आदेशों को पारित करने के लिए उपयोग कर सकते हैं जो आपके .vimrc(उदाहरण के लिए एक अलग colorcheme का चयन) में नहीं हैं। मेरे द्वारा उपयोग की जाने वाली पूरी कमांड है:

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

खबरदार: यदि आपका विम आपको शुरू होने पर एंटर प्रेस करने के लिए कहता है, तो आपको प्रॉम्प्ट दिखाई नहीं देगा, लेकिन जब तक आप एंटर नहीं करेंगे तब तक कुछ नहीं होगा! cmdheightचाल ऊपर है कि कम करने के लिए कर सकते हैं।


0

मैंने पाया 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 "$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

"चूंकि गितूब अब मॉर्डर कॉर्प का हिस्सा है, इसलिए हाइलाइट गिट रेपो को स्थानांतरित किया गया" रुचि थी, लेकिन सेमीन यह 90 के दशक के देवों को बड़े होने की आवश्यकता नहीं है।
उर्दा

0

मैं एक ही सवाल था और मैंने सुना है उतरा, सभी जवाब पढ़ सकते हैं और निम्नलिखित है कि मैं क्या अंत में वाक्य रचना हाइलाइटिंग हर मैं का उपयोग करने के लिए किया था lessया most:

sudo apt install source-highlight

फिर मैंने जाकर अपने लिए एक उपनाम बनाया lessऔर most(मैं ZSH का उपयोग करता हूं, लेकिन .bashrcयदि आप उपयोग करते हैं तो आप अपनी फ़ाइल के लिए उपनाम जोड़ सकते हैं ):

vim ~/.zshrc

( उन लोगों के लिए जो व्यर्थ में फंस सकते हैं: iसंपादन मोड में जाने के लिए दबाएं , जब आप प्रेस किए जाते हैं Escतब :तब xऔर अंत Enterमें परिवर्तनों को बचाने के लिए )

और डेबियन आधारित डिस्ट्रोस (जैसे डेबियन, उबंटू, मिंट, आदि) के लिए निम्न पंक्तियाँ पेस्ट करें:

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'

या आरपीएम डिस्ट्रोस के लिए (रेडहैट, फेडोरा, सेंटोस):

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.