2011-11-25 44 views
38

比方說,我有以下的文件在我的當前目錄:如何使PowerShell的選項卡完成的工作像猛砸

buildBar.bat 
    buildFoo.bat 
    buildHouse.bat 

然後我輸入我的命令提示符下:

./bu [TAB]

在bash,擊中TAB將擴大命令行

./build

但在PowerShell中(甚至CMD.EXE爲此事),按Tab它擴展的第一個項目在列表中:

./buildBar.bat

我更喜歡Bash行爲 - 有沒有辦法讓PowerShell的行爲如此?

+2

您可以使用Cygwin的'bash';) – Blender

+6

是的 - 這就是我在過去十年左右一直在做的事情,但我正在嘗試轉換到PowerShell,因爲我希望能夠使用命令在沒有安裝Cygwin的系統上運行。 – RobSiklos

回答

48

PowerShell中的新版本包括PSReadline,它可以用來做:

Set-PSReadlineKeyHandler -Key Tab -Function Complete 

要使其永久,將此命令放到C:\用戶\ [用戶] \文件\ WindowsPowerShell \ profile.ps1。

+0

我錯過了完成,只要完成可以完成這種方法。 示例:除了完成「St」並且沒有列表之外,還有一個命令列表「Start-Service」,「Start-Job」和「Stop-Service」並輸入「S」+ TAB I。 –

+2

'MenuComplete'而不是'Complete'更像bash,它可以讓你使用箭頭鍵從可用選項中進行選擇 – stib

+0

這不包含在PowerShell 5.1中,我認爲你需要導入模塊PSReadline或者安裝模塊PSReadline第一。 – LeBleu

12

看看這裏,沒有真正的必要條件:

PowerTab

,但我認爲是PowerShell控制檯的最佳選項卡擴展功能!

+0

有趣。如果有辦法做到這一點,那麼看起來很有可能使擴展工作像在bash中一樣。儘管如此,我還遠不是PowerShell的專家,所以可能會漏掉一些東西。 –

+0

當然!開始學習PowerTab模塊的代碼以嘗試滿足您的擴展需求。但PowerTab提供擴展幾乎任何命令,wmi,comobject,裝配與一個容易的選擇方式! –

4

修改TabExpansion函數來實現你想要的。請記住,如果您再次按Tab鍵從最初按下按鍵的位置修改新建議,也許它會完成到最後。我非常喜歡實際的行爲,我希望儘可能快地寫出行。最後別忘了通配符擴展,例如:bu * h [Tab]自動完成buildHouse.bat

+0

修改TabExpansion函數可能是要走的路,但仍然比我期待的要複雜得多。我想我需要更加流暢地使用PowerShell,才能解決這個問題。 – RobSiklos

14

現在可以使用PSReadline使PowerShell執行BASH風格的完成。退房http://www.leeholmes.com/blog/2012/09/13/bash-like-tab-completion-in-powershell/

+0

非常好 - 謝謝! – RobSiklos

+3

博客帖子中的鏈接已被破壞,但是在一天結束時,它會將您帶到[PsReadline(2012年的最後一次提交)](https://bitbucket.org/oising/psreadline/),該鏈接已分叉在2013年提交)](https:// github。com/lzybkr/PSReadLine) – GameScripting

+5

現在你可以用一行代碼來做到這一點,如下所述:http://stackoverflow.com/a/37715242/24874 –