Zsh प्रॉम्प्ट में छोटा रास्ता


18

Bashहै PROMPT_DIRTRIMविकल्प, जैसे जब मैं सेट PROMPT_DIRTRIM=3है, तो जैसे एक लंबे पथ:

user@computer: /this/is/some/silly/path

इसके बजाय यह दिखाएगा:

user@computer: .../some/silly/path

क्या एक समान विकल्प मौजूद है zsh?

जवाबों:


22

एक समान प्रभाव प्राप्त करने के लिए bash, जिसमें शामिल है ..., कोशिश करें:

%(4~|.../%3~|%~)

यह जांचता है, यदि पथ कम से कम 4 तत्व लंबा है ( %(4~|true|false)) और, यदि सही है, तो अंतिम 3 तत्वों ( .../%3~) के साथ कुछ बिंदु प्रिंट करता है , अन्यथा पूर्ण पथ मुद्रित होता है %~


मैंने देखा है कि bashउदाहरण के लिए, घर की निर्देशिका में पथ को छोटा करने के लिए लगता है:

~/.../some/long/path

एक समान प्रभाव के लिए, आप उपयोग करना चाह सकते हैं:

%(5~|%-1~/…/%3~|%4~)

यह जाँचता है, कि क्या रास्ता लंबा है, 5 तत्व, और उस स्थिति में पहला तत्व ( %-1~), कुछ डॉट्स ( /…/) और अंतिम 3 तत्व प्रिंट करता है। यह बिल्कुल पथ के समान नहीं है, जो कि आपके घर की निर्देशिका में नहीं हैं, शुरुआत में भी पहला तत्व होगा, जबकि bashउस मामले में बस डॉट्स प्रिंट करता है। इसलिए

/this/…/some/silly/path

के बजाय

.../some/silly/path

लेकिन यह जरूरी नहीं कि बुरी चीज हो।


1
मैं पहले संस्करण बेहतर है, लेकिन नोट की तरह है कि यह पता चलता है ~/a/bके रूप में .../a/bके बजाय ~/a/b। जिसे ठीक करने के लिए, आप उपयोग कर सकते हैं %(5~|…/%3~|%~)
मोमर

Zsh (मेरे जैसे) के लिए नए लोगों के लिए, आप इस वाक्यविन्यास का उपयोग PROMPTपर्यावरण चर के साथ अपने में करना चाहते हैं .zprofile, जैसे:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
रयान एच।

1
@RyanH। धन्यवाद, मेरे उत्तर को फिर से पढ़ते हुए मैंने ध्यान दिया, कि मैंने कभी उल्लेख नहीं किया, जहां इन सेटिंग्स को बनाने की आवश्यकता है। मुझे इसे ठीक करना होगा। आपकी टिप्पणी के बारे में दो छोटी बातें: इंटरेक्टिव शेल सत्र के लिए सेटिंग्स बनाई जानी चाहिए .zshrcऔर वास्तव में exportकिसी भी शेल आंतरिक मापदंडों की आवश्यकता नहीं है PROMPT
Adaephon

@Adaephon जानकारी के लिए धन्यवाद। मैं ठीक कर दूँगा! :)
रेयान एच।

8

यहां दिए गए अन्य उत्तरों के अलावा, आप भी उपयोग कर सकते हैं %< किसी दिए गए वर्णों के पथ को छोटा लिए । मुझे यह उपयोग करने के लिए बेहतर लगता है %<n>d, क्योंकि व्यक्तिगत पथ तत्व स्पष्ट रूप से अपने आप में काफी लंबे हो सकते हैं। %<पैदावार का उपयोग करके अधिक पूर्वानुमानित अधिकतम शीघ्र लंबाई।

उदाहरण के लिए, टिल्ड विस्तार के साथ पथ तत्व को छोड़ दिया%~ 15 वर्णों तक ) के , हटाए गए वर्णों को बदलना .., आप कुछ इस तरह कर सकते हैं:

PROMPT='%n@%m:%15<..<%~%<<%# '

यह पृष्ठ के अंत में, प्रॉम्प्ट विस्तार के तहत Zsh मैनुअल में प्रलेखित है ।


4

आप %3d शीघ्र विस्तार का उपयोग कर सकते हैं :

/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $

सामान्य रूप यह है %d, यदि कोई भी धनात्मक पूर्णांक अनुसरण dकरता है , तो वर्तमान पथ को दिखाने के लिए अनुगामी घटक निर्दिष्ट करता है, शून्य माध्य पूरे पथ को दिखाता है, ऋणात्मक पूर्णांक का अर्थ है कि अग्रणी पथ दिखाने के लिए:

.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $

3

Http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html या देखेंman zshmisc

%d
%/
Current working directory. If an integer follows the ‘%’, it specifies a number of trailing components of the current working directory to show

%~
As %d and %/, but if the current working directory starts with $HOME, that part is replaced by a ‘~’.

तो कुछ समान पाने के लिए PROMPT_DIRTRIM=3, आप उपयोग कर सकते हैं %3dया %3~, जैसे

% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d% 

यह हालांकि "..." को बैश में नहीं दिखाएगा।
एल्रोंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.