PowerShell 탭 완성이 Bash처럼 작동하도록하는 방법


105

현재 디렉토리에 다음 파일이 있다고 가정 해 보겠습니다.

buildBar.bat
buildFoo.bat
buildHouse.bat

그리고 나는 내 명령 프롬프트에서 다음을 입력 ./bu한 후와 TAB.

  • Bash에서는 다음으로 확장됩니다. ./build

  • PowerShell에서는 ./buildBar.bat목록의 첫 번째 항목으로 확장됩니다 .

  • Cmd에서 동작은 PowerShell과 동일합니다.

Bash 동작을 선호합니다. PowerShell이 ​​Bash처럼 동작하도록하는 방법이 있습니까?


2
Cygwin의 bash;)를 사용할 수 있습니다 .
Blender 2011

12
예-이것이 제가 지난 10 년 동안 해왔 던 일입니다.하지만 저는 PowerShell로 전환하려고합니다. Cygwin이 아닌 다른 시스템에서 명령 줄을 사용할 수 있기를 원하기 때문입니다. 설치되었습니다.
RobSiklos 2011

답변:


174

새 버전의 PowerShell에는이 작업을 수행하는 데 사용할 수있는 PSReadline이 포함됩니다.

Set-PSReadlineKeyHandler -Key Tab -Function Complete

영구적으로 만들려면이 명령을 C : \ Users \ [User] \ Documents \ WindowsPowerShell \ profile.ps1에 넣습니다.


25
MenuComplete대신에 Completebash와 비슷합니다. 화살표 키를 사용하여 사용 가능한 옵션 중에서 선택할 수 있습니다
stib

1
@LeBleu 저의 새로운 Windows 10 컴퓨터가 PSReadline과 함께 제공 되었기 때문에 이상합니다. 이 모듈은 Microsoft에서 가져온 것이라고 생각했습니다.
Franklin Yu

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:-(
SamB

21

이제 PowerShell에서 PSReadline을 사용하여 Bash 스타일 완성을 수행 할 수 있습니다.

PowerShell에서 Bash와 유사한 탭 완성 블로그 게시물을 확인하십시오 .


4
블로그 게시물의 링크가 그러나 그것은 당신을 제공합니다 하루의 끝에, 고장 PsReadline (지난 2012 년 커밋)포크 (지난 2013 년 커밋)
GameScripting

6
요즘에는 여기에 설명 된대로 한 줄로이 작업을 수행 할 수 있습니다. stackoverflow.com/a/37715242/24874
Drew Noakes

15

실제로 귀하의 desiderata가 아니라 여기를 살펴보십시오.

PowerTab

하지만 PowerShell 콘솔을위한 최고의 탭 확장 기능이라고 생각합니다 !!!


흥미 롭군. 이런 식으로 할 수있는 방법이 있다면 bash 에서처럼 확장이 작동하도록하는 것이 가능해 보입니다. 나는 PowerShell의 전문가가 아니기 때문에 뭔가 빠졌을 수 있습니다.
Andriy M

확실한! 확장 요구 사항을 수행하기 위해 PowerTab 모듈의 코드 연구를 시작하십시오. 그러나 PowerTab은 쉬운 선택 방법으로 거의 모든 명령, wmi, comobject, 어셈블리에 대한 확장을 제공합니다!
CB.

7

tab 이전 인수 / 매개 변수가 아닌 명령 이름 만 완성합니다.

또한 히스토리의 인수로 전체 명령을 자동 완성하려면 아래 키 바인딩을 설정하십시오.

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

이제 명령 이름의 몇 문자를 입력하고 위 / 아래 화살표를 사용하여 히스토리에서이 명령 (인수 포함)을 자동 완성합니다.

실시간 절약.


5

원하는대로 TabExpansion 함수를 수정하십시오. Tab 키를 다시 누르면 원래 키를 누른 위치에서 새로운 제안이 수정되면 끝까지 완료 될 수 있습니다. 나는 실제 행동을 강력히 선호하고 가능한 한 빨리 줄을 쓰길 원합니다. 마지막으로 와일드 카드 확장을 잊지 마세요. 예 : bu * h [Tab]이 자동으로 buildHouse.bat로 완료됩니다.


TabExpansion 함수를 수정하는 것이 아마도 갈 길일 것입니다. 그래도 제가 찾던 것보다 훨씬 더 복잡합니다. 나는 그것을 엉망으로 만들기 전에 powershell에 더 유창해질 필요가 있다고 생각합니다.
RobSiklos

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.