पॉशशेल काम को बैश की तरह करना स्वत: पूर्ण बनाना संभव है?


19

मुझे पॉवर्सहेल बहुत पसंद है, लेकिन लिनक्स बैकग्राउंड से आने वाली कुछ चीजें हैं जो वास्तव में मुझे परेशान कर रही हैं। उदाहरण के लिए, डिफ़ॉल्ट ऑटो पूर्णता कैसे काम करता है।

उदाहरण के लिए: Get-PS का विस्तार "Get-PSBreakpoint" से होता है, जो पहली मिलान कमांड है। बैश में यदि केवल एक कमांड मैचिंग बैश है तो मैचिंग कमांड का विस्तार होगा। यदि कई हिटिंग टैब एक बार कुछ भी नहीं करते हैं, तो डबल टैपिंग टैब मिलान आदेशों की एक सूची दिखाएगा, लेकिन विस्तार नहीं। क्या पॉवरशेल को इस तरह से व्यवहार करने का एक तरीका है?

और एक और बात, अगर मैंने एक लाइन लिखी है, और मार्कर को एक पुराने कमांड पर ले जाता है (मार्कर वह है जहां ^ है):

"Get-PSS ^ | Remove-PSSession" ऑटो "Get-PSSession ^" को पूरा करता है, सभी अनुगामी आदेशों को हटाता है। बैश में अनुगामी आदेश अभी भी अप्रभावित रहेंगे। क्या ऑटो को पूरा करने के दौरान पॉवर्स को ट्रेलिंग कमांड को हटाने का कोई तरीका नहीं है?

स्क्रीन को साफ़ करने के लिए CTRL + L प्राप्त करना एक बोनस होगा। CTRL + A लाइन की शुरुआत में जाने के लिए और लाइन के अंत में जाने के लिए CTRL + E।


मैंने आपके प्रश्न का उत्तर पोस्ट किया, लेकिन मजेदार बात यह है कि मैं इस प्रश्न पर इसलिए पहुंचा क्योंकि मैं इसके बिल्कुल उलट देख रहा हूं ... मैं चाहता हूं कि
पॉवरशेल

पावरशेल शैली का समापन बैश में उपलब्ध है - फ़ंक्शन मेनू-पूर्ण के लिए देखें
जेसन शिरक

सौभाग्य से हम अब 10 खिड़कियों पर बैश है।
बक्सर

जवाबों:


12

की जाँच करें PSReadline

लेख से:

यह मॉड्यूल PowerShell.exe में कमांड लाइन संपादन अनुभव को बदलता है। यह प्रावधान:

  • सिंटेक्स रंग
  • सरल वाक्यविन्यास त्रुटि सूचना
  • एक अच्छा मल्टी-लाइन अनुभव (संपादन और इतिहास दोनों)
  • अनुकूलन कुंजी बाइंडिंग
  • सीएमडी और एमएसीएस मोड (न तो पूरी तरह से अभी तक लागू किए गए हैं, लेकिन दोनों उपयोग करने योग्य हैं)
  • कई विन्यास विकल्प
  • बैश स्टाइल पूर्णता (वैकल्पिक Cmd मोड में, डिफ़ॉल्ट एमएसीएस मोड में)
  • बैश / zsh शैली इंटरैक्टिव इतिहास खोज (CTRL-R)
  • Emacs yank / kill ring
  • PowerShell टोकन आधारित "शब्द" आंदोलन और मार
  • पीछे आगे
  • लाइव सत्रों में इतिहास साझा करने सहित इतिहास की स्वचालित बचत
  • Ctrl + Space के माध्यम से "मेनू" पूर्णता (कुछ हद तक Intellisense की तरह, तीर के साथ पूर्णता का चयन करें)

मैं इसे दैनिक उपयोग करता हूं!


4
एक बार जब आप PSReadLine स्थापित कर लेते हैं, तो आपको अपने प्रोफ़ाइल में इसे जोड़कर बैश-शैली टैब को पूरा करना होगा:Set-PSReadlineKeyHandler -Key Tab -Function Complete
brianpeiris

3
PSReadLine अब विंडोज 10 पर डिफ़ॉल्ट रूप से स्थापित है । बस उस कॉन्फ़िगरेशन लाइन को डालें जो @brianpeiris आपके प्रोफाइल में उल्लिखित है और आप जाने के लिए अच्छा है।
डॉन क्रिकेशंक

अधिक बैश-जैसे अनुभव के CompleteMenuबजाय उपयोग करने का प्रयास करें Complete, यह आपको विकल्पों को नेविगेट करने के लिए तीर कुंजियों का उपयोग करने देता है
stib

3

हो सकता है कि आपके पास पावरटैब , एक अनुकूलन योग्य पावरस्लेब टैब विस्तार पर एक नज़र होनी चाहिए ।


2
धन्यवाद! पावरटैब वास्तव में टैब के विस्तार के तरीके को बेहतर बनाता है। फिर भी, कमांड के अंत में कुछ पूरा करने का मुद्दा नहीं है।
पीटर रॉबर्ट

2

हाय पीटर बस स्पीड 8 की तरह कुछ के लिए F8 दबाएँ । यह उन आदेशों के साथ पूरा होता है जो आप पहले चलाते हैं जो आपके पास पंक्ति में हैं। अनुगामी को हटाने के साथ समस्या कष्टप्रद है, मैं उसी मुद्दे के संबंध में कनेक्ट में एक सुझाव लिखता हूं। मुख्य समय में आप Powershell ISE का उपयोग कर सकते हैं, जो थोड़ा बेहतर व्यवहार करता है (अनुगामी पात्रों को हटाएं नहीं)।


2

पुराना कमांड। Exe सबसिस्टम अभी भी PowerShell में शामिल है, और बहुत सारे अप्रिय व्यवहार करने के लिए मजबूर करता है। लेकिन PowerShell v3 के रूप में, GUI (PowerShell ISE) अब प्रयोग करने योग्य है, और इसमें बहुत अधिक आधुनिक पूर्णता अनुभव + रंगीकरण शामिल है।

यहाँ छवि विवरण दर्ज करें


2

PowerShell आदरणीय कमांड प्रॉम्प्ट के समान कंसोल सुविधाओं का उपयोग करता है; इसलिए आपके पास सामान्य होम / एंड है, और:

  • F3 पिछली कमांड को लाने के लिए
  • F1 पिछले कमांड से किसी एक कैरेक्टर को कॉपी करना
  • F7 पॉपअप इतिहास विंडो

... लेकिन जहाँ तक मुझे पता है सभी संभावित पूर्णताओं को दिखाने के लिए कोई सुविधा नहीं है।


यह अभी भी अच्छे पुराने बैश की तुलना में बहुत सीमित है। उदाहरण के लिए, यह वास्तव में bash में ctrl + r (speedearch) टाइप करने में सक्षम है और बस टाइप करना शुरू कर देगा और एक मिलान वाला पिछला कमांड दिखाई देगा।
पीटर मॉबर्ग

1

नियमित रूप से शालीनता कमांड प्रॉम्प्ट विंडो के रूप में cmd ​​का उपयोग करता है। इसीलिए इसकी एक विशाल विरासत है (पुराने समय के लिए पुराने सीएमडी के व्यवहार पर आधारित कार्यक्रम) जो पिछड़ी तुलनात्मकता के कारण बदल नहीं सकते हैं।

मेरा सुझाव है कि आप पॉवरशेल के बजाय पावरशेल_इज़ का उपयोग करें (इसमें मानक पॉवरशेल बंडल शामिल है)। संस्करण 3.0 (पिछले के बारे में निश्चित नहीं) बॉक्स से Intellisense का समर्थन करें। यह पूरी होने वाली शैली को कोसने के बहुत करीब है। टैब के बजाय बस Ctrl + स्पेस मारा । मैं PowerTab पर कस्टम पूर्णता के साथ समस्याओं का अनुभव करता हूं, लेकिन Intellisense इसके साथ ठीक काम करता है। Powershell_ise भी अनुगामी आदेशों को सुरक्षित रखता है, सामान्य चयन मोड का समर्थन करता है, चुने हुए कमांड के लिए Ctrl + C, Ctrl + V, Ctrl + A का समर्थन करता है, इसलिए Ctrl + A, लाइन के भीख में कूदने, Ctrl + A, अंत तक (या होम) /समाप्त)।


0

PowerShell कमांड के लिए अपने स्वयं के पार्सर का उपयोग करता है, इसलिए एक अर्थ में यह cmd.exe की तुलना में एक अलग शेल है, भले ही वे एक ही टर्मिनल (गुई विंडो) साझा करते हैं।

उस अंतर के कारण, PowerShell आपको अपने स्वयं के फ़ंक्शन के साथ टैब-पूर्ण कार्यक्षमता को ओवरराइड करने की अनुमति देता है। मेरे पास खुद के साथ गड़बड़ करने का समय नहीं है, लेकिन आप मूल रूप tabexpansionसे अपने प्रोफ़ाइल में फ़ंक्शन को ओवरराइड करते हैं , उसी तरह आप promptफ़ंक्शन को ओवरराइड कर सकते हैं ।

ली होम्स (भयानक विंडोज पॉवरशेल कुकबुक के लेखक) द्वारा मुझे यह लेख मिला , यह एक टैब-विस्तार ओवरराइड का वर्णन करता है, जो आपके लिए बहुत समान है। आप शायद इसे ट्विक कर सकते हैं ताकि आपको वही दिया जा सके जो आप चाहते हैं।

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