"-X" के बिना "कम-एफ" का उपयोग कैसे करें, लेकिन फिर भी केवल एक पृष्ठ पर आउटपुट प्रदर्शित करें?


11

मैं git के पेजर को ट्विक कर रहा हूं, लेकिन मुझे इसके साथ कुछ मुद्दे मिले हैं।

मुझे क्या चाहिए:

  1. हमेशा रंगीन आउटपुट
  2. टचपैड या माउस द्वारा स्क्रॉल करना
  3. छोड़ो-अगर एक स्क्रीन

और मेरा वर्तमान विन्यास है:

$ git config --global core.pager
less -+F -+X -+S

यह पिछले एक को छोड़कर सब कुछ करता है।

लेकिन, अगर मैं हटाता हूं, तो -+Fएक-स्क्रीन के मामले में कोई आउटपुट नहीं होगा। यदि मैं -+Xसाथ ही हटा देता हूं , तो आउटपुट वापस आ जाता है लेकिन मैं टचपैड द्वारा स्क्रॉल नहीं कर सकता less

क्या कोई वर्कअराउंड है जो उपरोक्त सभी आवश्यकताओं को पूरा कर सकता है?


यह एक बहुत ही दिलचस्प सवाल है। जब मैं उपयोग करता हूं -F(यदि एक स्क्रीन छोड़ दें) तो मैं हमेशा इसे -X(अक्षम टर्मिट इनिट और डी-इनिट) के संयोजन में करता हूं , लेकिन जैसा कि आप कहते हैं, कि माउस के साथ स्क्रॉल करने की अनुमति नहीं होगी। (मुझे संदेह है कि स्क्रॉलिंग बिल्कुल भी संभव है -X।) मैंने प्रश्न शीर्षक को संशोधित किया है, लेकिन अगर आपको लगता है कि यह बहुत अर्थ खो देता है, तो उस रोल को वापस करने के लिए स्वतंत्र महसूस करें। :)
वाइल्डकार्ड

जवाबों:


8

अपडेट करें

tl; dr Solution: कम 530 में अपग्रेड करें

से http://www.greenwoodsoftware.com/less/news.530.html :

अगर एक स्क्रीन पर -F और फ़ाइल फिट बैठता है, तो टर्मिनल टर्मिनल init अनुक्रम का उपयोग न करें।

तो इस फिक्स के साथ हमें यह निर्धारित करने की भी ज़रूरत नहीं है कि क्या -Xहम अपने दम पर उपयोग करें , less -Fबस इसका ध्यान रखें।

पुनश्च। कुछ अन्य कम कॉन्फ़िगरेशन जो मैं उपयोग करता हूं:

export PAGER='less -F -S -R -M -i'
export MANPAGER='less -R -M -i +Gg'
git config --global core.pager 'less -F -S -R -i'
#alias less='less -F -S -R -M -i'

मैं अंत में अपने आप पर एक आवरण लिखने के साथ समाप्त हुआ।

#!/usr/local/bin/bash

# BSD/OSX compatibility
[[ $(type -p gsed) ]] && SED=$(type -p gsed) || SED=$(type -p sed)
CONTEXT=$(expand <&0)
[[ ${#CONTEXT} -eq 0 ]] && exit 0
CONTEXT_NONCOLOR=$( $SED -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" <<< "$CONTEXT")
LINE_COUNT=$( (fold -w $(tput cols) | wc -l) <<< "$CONTEXT_NONCOLOR" )

[[ $LINE_COUNT -ge $(tput lines) ]] && less -+X -+S -R <<< "$CONTEXT" || echo "$CONTEXT"

बीएसडी / ओएसएक्स उपयोगकर्ताओं को मैन्युअल रूप से स्थापित करना चाहिए gnu-sed। अद्भुत regexp, जो रंग कोड हटाने में मदद करता है, /programming//a/18000433/2487227 से है

मैंने इस स्क्रिप्ट को /usr/local/bin/pagerतब तक सहेजा हैgit config --global core.pager /usr/local/bin/pager

ओसीडी रोगियों के लिए इलाज, हुर्रे!


यह काम नहीं करेगा अगर आपकी फ़ाइल में लिपटी हुई लाइनें हैं।
थॉमस डिके

@ThomasDickey मुझे लगता है कि foldसंभालना चाहिए ... लेकिन, हाँ, कीड़े हो सकता है ... क्या आप कृपया कृपया एक उदाहरण प्रदान कर सकते हैं?
फ्रेडरिक झांग

@ThomasDickey paste.kde.org/ph9vl7es5 यह एक मेरे लिए काम किया
फ्रेडरिक झांग

foldवास्तव में टैब को नहीं समझता है। आप इसका उपयोग करके मरम्मत करने में सक्षम हो सकते हैं expand। वह अभी भी एंबेडेड एग्जिट सीक्वेंस को हैंडल नहीं करेगा (जो अक्सर पूछा जाता है-के संदर्भ में git)।
थॉमस डिके

1
टैब केवल "काम" करेगा जब आपके टर्मिनल की चौड़ाई टैब-स्टॉप की एक से अधिक हो जाएगी। जब मैंने इसका परीक्षण किया, तो मैंने देखा कि foldरिक्त स्थान का उपयोग करते हुए लिपटे लाइनों को समायोजित नहीं किया, लेकिन केवल काटने के लिए निकटतम बिंदु पाया। तो उपस्थिति भ्रामक होगी।
थॉमस डिके

0

मैं अपने पेजर के रूप में निम्न आवरण का उपयोग करता हूं। यह यहां दिखाए गए अन्य आवरण के रूप में फैंसी नहीं है (क्योंकि यह हमेशा less -Sलंबी लाइनों को छोटा करने के लिए उपयोग करता है), लेकिन यह सरल है। ITerm2 के साथ बहुत अच्छा काम करने लगता है।

#!/bin/bash
set -e

text=$(</dev/stdin)
text_lines=$(echo "${text}" | wc -l)
term_lines=$(tput lines)

if [[ $text_lines -lt $term_lines ]]; then
    echo "${text}"
else
    echo "${text}" | less -S -R
fi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.