bash에서와 같이 Powershell에서 자동 완성 기능을 사용할 수 있습니까?


19

나는 Powershell을 좋아하지만 Linux 배경에서 온다면 실제로 나를 괴롭히는 몇 가지가 있습니다. 예를 들어 기본 자동 완성이 작동하는 방식과 같습니다.

예를 들어 : Get-PS는 첫 번째 일치 명령 인 "Get-PSBreakpoint"로 확장됩니다. bash에서 일치하는 명령이 하나만 있으면 bash는 일치하는 명령으로 확장됩니다. 여러 타격 탭이 한 번도 수행되지 않으면 두 번 탭하면 일치하는 명령 목록이 표시되지만 확장되지는 않습니다. Powershell을 이와 같이 작동시키는 방법이 있습니까?

그리고 한 줄을 작성하고 마커를 이전 명령으로 다시 이동하면 다른 하나가 있습니다 (마커는 ^ 위치입니다).

"Get-PSS ^ | Remove-PSSession"이 "Get-PSSession ^"로 자동 완료되어 모든 후행 명령이 제거됩니다. bash에서 후행 명령은 여전히 ​​영향을받지 않습니다. 자동 완성시 Powershell이 ​​후행 명령을 제거하지 못하게하는 방법이 있습니까?

화면을 지우려면 CTRL + L을 얻는 것이 좋습니다. 줄의 시작 부분으로 이동하려면 Ctrl + A를 누르고 줄의 끝 부분으로 이동하려면 Ctrl + E


귀하의 질문에 대한 답변을 게시했지만 재미있는 점은 정반대를 찾고 있기 때문에이 질문에 도착했다는 것입니다 ... bash에서 PowerShell 스타일 완성을 원합니다 :)
Robert S Ciaccio

PowerShell을 스타일의 완성은 떠들썩한 파티에서 사용할 수 있습니다 - 기능 메뉴 완성을위한보기
제이슨 회피

운 좋게도 이제 Windows 10에 bash가 있습니다.
byxor

답변:


12

PSReadline을 확인하십시오 .

기사에서 :

이 모듈은 PowerShell.exe의 명령 줄 편집 환경을 대체합니다. 다음을 제공합니다.

  • 구문 채색
  • 간단한 구문 오류 알림
  • 훌륭한 멀티 라인 경험 (편집 및 기록)
  • 사용자 정의 가능한 키 바인딩
  • Cmd 및 emacs 모드 (아직 완벽하게 구현되지는 않았지만 모두 사용 가능)
  • 많은 구성 옵션
  • 배쉬 스타일 완성 (Cmd 모드에서 옵션, Emacs 모드에서 기본값)
  • Bash / zsh 스타일 대화식 히스토리 검색 (CTRL-R)
  • 이맥스 k 크 / 킬 링
  • PowerShell 토큰 기반 "단어"이동 및 종료
  • 실행 취소 / 다시 실행
  • 실시간 세션에서 기록 공유를 포함하여 기록 자동 저장
  • Ctrl + Space를 통한 "메뉴"완성 (Intellisense와 같이, 화살표로 완성 선택)

매일 사용합니다!


4
당신이 PSReadLine를 설치하면, 당신은 당신의 프로필이를 추가하여 bash는 스타일 탭 완성을 활성화해야합니다 :Set-PSReadlineKeyHandler -Key Tab -Function Complete
brianpeiris

3
PSReadLine은 이제 Windows 10 에 기본적 으로 설치 됩니다 . @brianpeiris가 언급 한 구성 줄을 프로필에 입력하면됩니다.
Don Cruickshank

사용해보십시오 CompleteMenu대신 Complete더 떠들썩한 파티와 같은 경험을, 당신이 선택을 이동하려면 화살표 키를 사용할 수 있습니다에 대한
STIB

3

사용자 지정 가능한 PowerShell 탭 확장 인 Powertab을 살펴보아야 합니다.


2
감사! Powertab은 실제로 탭 확장을 향상시킵니다. 여전히 명령 끝에없는 것을 완성하는 문제가 있습니다.
피터 Moberg

2

안녕 피터 그냥 F8 키 를 눌러 speedsearch 같은 것을. 행에있는 항목으로 시작하는 이전에 실행 한 명령으로 완료됩니다. 후행 삭제와 관련된 문제는 성가신 일입니다. Connect에서 동일한 문제에 대한 제안을 작성합니다. 기본적으로 Powershell ISE를 사용할 수 있으며 조금 더 잘 작동합니다 (마지막 문자는 삭제하지 마십시오).


2

이전 command.exe 하위 시스템은 여전히 ​​PowerShell과 관련이 있으며 많은 불쾌한 동작이 발생합니다. 그러나 PowerShell v3부터 GUI (PowerShell ISE)를 사용할 수 있으며 훨씬 더 현대적인 완성 경험 + 색상 화가 포함되어 있습니다.

여기에 이미지 설명을 입력하십시오


2

PowerShell은 훌륭한 명령 프롬프트와 동일한 콘솔 기능을 사용합니다. 그래서 당신은 일반적인 Home / End를 가지고 있으며 :

  • F3 이전 명령을 불러 오려면
  • F1 이전 명령에서 단일 문자를 복사하려면
  • F7 팝업 기록 창

...하지만 내가 아는 한 모든 가능한 완성을 보여줄 수있는 시설은 없습니다.


이것은 좋은 오래된 배쉬와 비교할 때 여전히 매우 제한적입니다. 예를 들어 bash에 ctrl + r (speedsearch)을 입력하고 입력하기 시작하면 일치하는 이전 명령이 표시됩니다.
Peter Moberg

1

일반 powershell은 cmd를 명령 프롬프트 창으로 사용합니다. 그렇기 때문에 이전 버전과의 비교로 인해 변경할 수없는 거대한 유산 (오래된 오래된 cmd의 동작에 대한 프로그램 릴레이)이 있습니다.

powershell 대신 powershell_ise 를 사용하는 것이 좋습니다 (표준 powershell 번들에 포함되어 있음). 버전 3.0 (이전에 대해서는 잘 모름)은 Intellisense를 기본적으로 지원합니다. 이것은 bash 완성 스타일에 매우 가깝습니다. Tab 대신 Ctrl + Space 를 누르 십시오. PowerTab에서 사용자 지정 완료에 문제가 있지만 Intellisense가 제대로 작동합니다. Powershell_ise는 후행 명령을 유지하고 일반 선택 모드를 가지며 입력 한 명령에 대해 Ctrl + C, Ctrl + V, Ctrl + A를 지원하므로 Ctrl + A는 줄 끝의 Ctrl + A로 이동합니다. /종료).


0

PowerShell은 명령에 자체 파서를 사용하므로 동일한 터미널 (gui 창)을 공유하더라도 cmd.exe와는 다른 셸입니다.

이러한 차이점 때문에 PowerShell을 사용하면 탭 완성 기능을 사용자 고유의 기능으로 재정의 할 수 있습니다. 나는이 문제 tabexpansion를 해결할 시간이 없었지만 기본적으로 함수 를 무시할 수있는 것과 같은 방법으로 프로필의 prompt함수를 무시합니다 .

나는 발견 이 기사를 함으로써, 리 홈즈 (멋진의 저자 Windows PowerShell을 요리 책 당신이 찾고있는 것과 매우 유사한 TabExpansion에 재정의를 설명합니다). 원하는 것을 정확하게 제공하기 위해 아마도 그것을 조정할 수 있습니다.

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