2012-07-26 11 views
89

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

बैश, जब भी मैं एक लंबे आदेश टाइप किया गया था और मैंने देखा है में से पहले कुछ और चलाने के लिए किया था, मैं तो बस की तरह इसे बाहर टिप्पणी करने के लिए निम्नलिखित में था:

[email protected]> #mysuperlongcommand with some arguments 
[email protected]> thecommandIhavetorunfirst #and then: then up up 
[email protected]> #mysuperlongcommand with some arguments #I just need to uncomment it! 

बहरहाल, यह काफी आवर्तक स्थिति है zsh साथ के रूप में संबोधित करने के लिए के रूप में आसान नहीं, #mysuperlongcommand इस तरह के रूप में चलाने दिया जाएगा (और जिसका परिणाम:। zsh: command not found: #mysuperlongcommand

उत्तर

132

बस zsh को आजमाने की शुरुआत करने के बाद, मैं भी इस समस्या में भाग गया। आप बैश-स्टाइल टिप्पणियों को सक्रिय करने के लिए setopt interactivecomments कर सकते हैं।

+0

यह सही जवाब है! धन्यवाद! –

+1

यदि आप केवल एक ही बंद हैं तो आप 'set -k' भी कर सकते हैं। लेकिन मैं अपने zshrc –

+9

में इस उत्तर से 'Setopt' लाइन का उपयोग करूंगा क्या कोई कारण है कि यह डिफ़ॉल्ट व्यवहार नहीं है? – naught101

18

मुझे लगता है अपने आप को इस बार के रूप में अच्छी तरह से कर मुझे क्या लंबे आदेश कट जाता है, आदेश की जरूरत है कि निष्पादित। पहले जाने के लिए और फिर लंबे कमांड को वापस पेस्ट करें। यह आसान है: CTRL + यू वर्तमान कमांड को बफर में CTRL + Y चिपकाता है। Zsh और bash में काम करता है।

+0

अच्छा कामकाज, thx :) – Rolf

+0

अच्छी तरह से, वास्तव में, मेरा समाधान एक कामकाज है जबकि आपका समाधान सबसे अच्छा फिट है;) – Rolf

+4

यह स्वीकार्य उत्तर नहीं होना चाहिए। नीचे दिया गया समाधान "सेटोपेट इंटरैक्टिव कॉमेंट्स" का उपयोग करने के लिए कहता है। इसका कारण यह है कि यदि आप केवल वर्तमान कमांड को काटते हैं, तो यह आपके zsh इतिहास में नहीं है, और फिर आप जिस आदेश को आप कोशिश कर रहे थे उसे ओवरराइट किए बिना अपने नए कमांड में टाइप करते समय आसानी से कट और पेस्ट का उपयोग नहीं कर सकते बचाना। – Douglas

34

मैं

bindkey "^Q" push-input 

का उपयोग zsh मैनुअल से:

पुश पूरे वर्तमान बहु बफर ढेर पर निर्माण और उच्च-स्तरीय (PS1) शीघ्र वापस लौटें। यदि वर्तमान पार्सर निर्माण केवल एक पंक्ति है, तो यह बिल्कुल पुश-लाइन की तरह है। अगली बार जब संपादक शुरू होता है या गेट-लाइन के साथ पॉप किया जाता है, तो निर्माण बफर स्टैक के शीर्ष से पॉप हो जाएगा और संपादन बफर में लोड किया जाएगा। , इसके अलावा

> long command 
Ctrl+Q => long command disappears to the stack 
> forgotten command 
long command reappears from stack 
> long command 

आप INTERACTIVE_COMMENTS विकल्प (setopt INTERACTIVE_COMMENTS), आप की तरह आप के लिए उपयोग किया जाता है इंटरैक्टिव गोले में टिप्पणियों का उपयोग करने में सक्षम हो जाएगा निर्धारित करते हैं:

तो यह इस तरह दिखता है।

+0

मुझे आपका विकल्प पसंद है, लेकिन मैं इसे काम नहीं कर सकता :(क्या कोई तरीका है कि मुझे फ़ाइल में बाध्यकारी लिखना चाहिए, या यह सिर्फ दो अक्षर है,^और क्यू? मेरा आदेश मिटा दिया गया है, लेकिन मैं नहीं करता यह इनपुट में फिर से दिखने के बारे में जानें। –

+1

@ मिहने अगर आदेश गायब हो जाता है तो ऐसा लगता है कि पुश-इनपुट काम कर रहा है। जब आप अगली कमांड चलाते हैं या केवल एंटर दबाते हैं तो इसे वापस दिखाना चाहिए। क्या ऐसा नहीं है? –

+0

मूर्ख मैं, मुझे ऊपर तीर दबाए जाने की उम्मीद थी। धन्यवाद, महान टिप, –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^