मैं Cygwin बैश प्रॉम्प्ट का उपयोग कर रहा हूं, और लंबे समय तक कमांड एक ही लाइन पर चारों ओर लपेटेगा, क्योंकि मेरे PS1 को केवल '$' सेट करने के बावजूद अगली पंक्ति में जाने का विरोध किया गया है।
यहाँ एक स्क्रीनशॉट है,
मैं Cygwin बैश प्रॉम्प्ट का उपयोग कर रहा हूं, और लंबे समय तक कमांड एक ही लाइन पर चारों ओर लपेटेगा, क्योंकि मेरे PS1 को केवल '$' सेट करने के बावजूद अगली पंक्ति में जाने का विरोध किया गया है।
यहाँ एक स्क्रीनशॉट है,
जवाबों:
मैं पहले से ही MinTTY का उपयोग कर रहा था, और PS1 में नईलाइन को हटाने से भी मदद नहीं मिली। इस पृष्ठ पर एक सलाह ने मदद की। मैंने इस बैश कमांड को अंजाम दिया:
kill -WINCH $$
मेरे मामले में, इसे चलाने के बाद एक बार इस मुद्दे को ठीक कर दिया, यहां तक कि लॉग आउट करने और वापस अंदर आने के बाद भी, मुझे यकीन नहीं है कि यह हमेशा मामला है।
-WINCH
, यह बैश प्रक्रिया को संकेत देता है कि टर्मिनल विंडो को आकार दिया गया था। इसलिए यह प्रत्येक टर्मिनल विंडो के आकार बदलने के बाद किया जाना चाहिए, मुझे लगता है।
मेरे लिए, समाधान निम्न पंक्तियों को .bashrc में जोड़ने का था:
PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM
नोट प्रॉम्प्ट में प्रिंट न हो सकने पात्रों में सीमित होने चाहिए कि
\[
... \]
।
मुझे मिन्टटी के साथ भी यही समस्या थी। समस्या शायद प्राथमिक संकेत (PS1) के साथ कुछ करना है।
मेरे लिए समाधान PS1 से अंतिम 'नई लाइन' वर्ण ('$' चिह्न से ठीक पहले) निकाल रहा था:
user@host ~
$ echo $PS1
\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
user@host ~
$ export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ '
user@host ~ $
संदर्भ के लिए http://cygwin.com/ml/cygwin/2001-07/msg00140.html देखें ।
इस परिवर्तन को लगातार बनाए रखने के लिए, निर्यात PS1 = '[\ e] 0; \ w a] \ n [\ e [32m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ _ जोड़ें $ 'अपने ~ / .bashrc फ़ाइल में।
@ jtpereyda का जवाब निश्चित रूप से निशान पर है। लेकिन किसी कारण से मैं इसे जाने नहीं दे सका, और थोड़ा गहरा खोदा।
इस टिप्पणी पर विस्तार करते हुए , यदि आप vim में टर्मिनल का आकार बदलते हैं (या शेल से दूर किसी अन्य पूर्ण स्क्रीन अनुप्रयोग को लेता है), जिसके परिणामस्वरूप SIGWINCH
अक्सर शेल को नहीं भेजा जाता है, इसलिए जब इसे वापस नियंत्रण प्राप्त होता है तो यह नहीं होता है 'पता है कि टर्मिनल का आकार बदल दिया गया है।
जब आप अपने टर्मिनल का आकार बदल लेते हैं, तो उसे ioctl(..., TIOCSWINSZ, ...)
मास्टर पीटी पर कॉल करना चाहिए जो विम में चल रहा है। इसके परिणामस्वरूप killpg(SIGWINCH)
विम के प्रक्रिया समूह में परिणाम होता है ।
समस्या यह है कि विम अपने स्वयं के प्रक्रिया समूह में चलाए जाने वाले शेल से अलग है, जिससे इसे निष्पादित किया गया था, इसलिए बैश शेल को प्राप्त नहीं होता है SIGWINCH
और अपनी लाइनों / कॉलम को उचित रूप से समायोजित नहीं करता है।
यदि आप एक स्थायी समाधान चाहते हैं, तो shopt -s checkwinsize
अपने में जोड़ें .bashrc
। यह ioctl(..., TIOCGWINSZ, ..)
प्रत्येक आदेश से लौटने के बाद विंडो के आकार ( ) को बैश करता है , और इसकी पंक्तियों / स्तंभों को अपडेट करता है।
आपकी टर्मिनल सेटिंग्स (शायद) में कुछ टूट गया है।
मुझे लगता है कि आप पहले से ही उस सत्र से बाहर निकलने और एक नया पुनरारंभ करने की कोशिश कर चुके होंगे।
जब आपको साइगविन टर्मिनल के लिए कोई समाधान नहीं मिलता है, तो मिन्टी को आज़माएं (वास्तव में बेहतर)।
जैसा कि akatakritos द्वारा टिप्पणी की गई थी , आपने संभवतः अपने टर्मिनल का आकार बदल दिया था, जबकि विम खुला था।
जब ऐसा होता है, तो बस टर्मिनल को एक बार फिर से आकार दें और समस्या दूर हो जाती है।
TERM
पर्यावरण चर किसके लिए निर्धारित है? साइग्विन कंसोल के लिए, यह होना चाहिएcygwin
।