कैसे बैश की तरह PowerShell टैब को पूरा करने का काम करें


105

मान लीजिए कि मेरी वर्तमान निर्देशिका में निम्नलिखित फाइलें हैं:

buildBar.bat
buildFoo.bat
buildHouse.bat

और मैं अपने कमांड प्रॉम्प्ट पर निम्नलिखित टाइप करता हूं, ./buऔर फिर TAB

  • बैश में, इसका विस्तार हो जाता है ./build

  • PowerShell में, इसका विस्तार हो जाता है ./buildBar.bat- सूची में पहला आइटम।

  • Cmd में, व्यवहार PowerShell के समान है।

मैं बैश व्यवहार पसंद करता हूं - क्या पॉवरशेल को बैश की तरह व्यवहार करने का एक तरीका है?


2
आप साइग्विन का उपयोग कर सकते हैं bash;)
ब्लेंडर

12
हां - यह वही है जो मैं पिछले एक दशक से कर रहा हूं, लेकिन मैं PowerShell में संक्रमण करने की कोशिश कर रहा हूं, क्योंकि मैं अपने खुद के अलावा सिस्टम पर कमांड लाइन पर उड़ान भरने में सक्षम होना चाहता हूं, जहां Cygwin नहीं है स्थापित।
रॉबसीक्लोस

जवाबों:


174

PowerShell के नए संस्करणों में PSReadline शामिल है, जिसका उपयोग यह करने के लिए किया जा सकता है:

Set-PSReadlineKeyHandler -Key Tab -Function Complete

इसे स्थायी बनाने के लिए, इस कमांड को C: \ Users \ [User] \ Documents \ WindowsPowerShell \ profile.ps1 में डालें।


25
MenuCompleteइसके बजाय Completeबैश की तरह अधिक है, यह आपको उपलब्ध विकल्पों में से चुनने के लिए तीर कुंजियों का उपयोग करने देता है
stib

1
@LeBleu यह अजीब है, क्योंकि मेरे ब्रांड की नई विंडोज 10 मशीन PSReadline के साथ आई है। मुझे लगा कि मॉड्यूल माइक्रोसॉफ्ट से था।
फ्रैंकलिन यू

8
BTW, अगर आपकी मशीन पर profile.ps1 फ़ाइल मौजूद नहीं है, तो आप एक कमांड के साथ जनरेट कर सकते हैंnew-item $profile -itemtype file -force
Reinis

2
यह बहुत संभावना है कि आपकी मशीन आपके पास नहीं होगी C:\Users\[User]\Documents\WindowsPowerShell\profile.ps1.आपको वास्तव में चलाने की आवश्यकता हैnew-item $profile -itemtype file -force
RF

1
यह वास्तव में असुविधाजनक वर्तनी है touch:-(
सैमबी

21

अब PSReadline का उपयोग करके बैश-शैली को पूरा करने के लिए PowerShell प्राप्त करना संभव है।

PowerShell में ब्लॉग पोस्ट बैश-जैसे टैब को पूरा करें


4
ब्लॉगपोस्ट में लिंक टूटा हुआ है, हालांकि दिन के अंत में यह आपको PsReadline (2012 में आखिरी कमिटमेंट) में लाता है जिसे कांटा
GameScripting

6
आजकल आप इसे एक-लाइनर के साथ कर सकते हैं, जैसा कि यहां वर्णित है: stackoverflow.com/a/37715242/24874
ड्रू नोक

15

यहाँ एक नज़र रखना, वास्तव में अपने desiderata नहीं:

PowerTab

लेकिन मुझे लगता है कि PowerShell कंसोल के लिए सबसे अच्छा टैब विस्तार सुविधा है !!!


दिलचस्प। यदि ऐसा कुछ करने का कोई तरीका है, तो यह विस्तार कार्य को बैश में करना संभव है। मैं PowerShell में एक विशेषज्ञ होने से बहुत दूर हूं, हालांकि, कुछ याद आ रही है।
एंड्री एम

ज़रूर! अपने विस्तार की ज़रूरतों को पूरा करने के लिए पावरटैब मॉड्यूल के कोड का अध्ययन करना शुरू करें। लेकिन पावरटैब लगभग किसी भी कमांड, wmi, comobject, असेंबली के लिए एक आसान चयन के साथ विस्तार प्रदान करता है!
सीबी।

7

tab केवल कमांड नाम को उसके पिछले तर्कों / मापदंडों को पूरा नहीं करता है।

इतिहास से तर्कों के साथ पूर्ण कमांड को स्वत: पूर्ण करने के लिए नीचे कीबाइंडिंग सेट करें।

Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward

अब, कमांड नाम के कुछ अक्षर टाइप करें और इतिहास से इस कमांड (आर्ग्युमेंट के साथ) को स्वत: पूर्ण करने के लिए अप / डाउन एरो का उपयोग करें।

वास्तविक समय सेवर।


5

जो आप चाहते हैं उसे प्राप्त करने के लिए TabExpansion फ़ंक्शन को संशोधित करें। याद रखें कि शायद यह अंत तक पूरा हो जाता है यदि आप टैब को फिर से दबाते हैं तो नया सुझाव जहां आप मूल रूप से कुंजी दबाते हैं, वहां से संशोधित करें। मैं वास्तविक व्यवहार को दृढ़ता से पसंद करता हूं, मैं चाहता हूं कि रेखा जितनी तेजी से संभव हो सके। अंत में वाइल्डकार्ड के विस्तार को न भूलें, उदाहरण के लिए: bu * h [टैब] स्वचालित रूप से buildHouse.bat को पूरा करता है


TabExpansion फ़ंक्शन को संशोधित करना संभवतः जाने का तरीका है, फिर भी जो मैं देख रहा था, उससे कहीं अधिक जटिल है। मुझे लगता है इससे पहले कि मैं इसके साथ खिलवाड़ करने में सक्षम हूं, मुझे पावरशेल में और अधिक धाराप्रवाह प्राप्त करने की आवश्यकता होगी।
रॉबिसक्लोस

1

पॉवर्सशेल कोर के साथ हम ऑटो सुझाव प्राप्त करने के लिए इतिहास के रूप में PSReadLine के लिए PredictionSource संपत्ति सेट कर सकते हैं । अधिक जानकारी के लिए YouTube वीडियो देखें https://youtu.be/I0iIZe0dUNw


1
# keep or reset to powershell default
Set-PSReadlineKeyHandler -Key Shift+Tab -Function TabCompletePrevious

# define Ctrl+Tab like default Tab behavior
Set-PSReadlineKeyHandler -Key Ctrl+Tab -Function TabCompleteNext

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