Tương đương với Ctrl-r của bash trong PowerShell


19

có ai biết một cách để có tính năng tìm kiếm lệnh lạc hậu của bash [Ctrl-r](và [Ctrl-o]) rất hữu ích, trong windows powershell không?

C-rlà một arrow upthao tác lịch sử mạnh mẽ hơn , nó giống như các emacs C-rở chỗ nó tìm kiếm ngược bên trong các lệnh bạn đã nhập trước đó. Sau đó C-othực hiện lệnh đó và ngay lập tức đặt vào dòng lệnh tiếp theo sau đó. Vì vậy, bạn có thể lặp lại hàng loạt các lệnh hiệu quả. Ngoài ra, nó nhìn vào một lịch sử đã lưu, không phải là một lịch sử phiên. ( ~/.bash_historytập tin). Đó là vô cùng hữu ích.

cảm ơn.

ps: như một phần thưởng, việc hoàn thành tab không hoạt động theo chu kỳ cũng sẽ rất tuyệt vời.


Ctrl O làm gì mà bạn muốn sao chép? Thông tin thêm chúng tôi luôn luôn tốt ...
Austin T Pháp

Đúng, đã chỉnh sửa câu hỏi :)
v.oddou

2
Tôi không tin rằng tính năng này được hỗ trợ. PowerShell 3 có một hook được gọi là PSConsoleHostReadlinecó thể hữu ích. Một nơi tốt để bắt đầu sẽ là sử dụng PSReadLine , nơi sử dụng hook đó. PSReadLine không hỗ trợ ctrl-o, nhưng nó hỗ trợ ctrl-r (được cho là - nó không hoạt động với tôi). Tôi có thể có một cái nhìn về việc thực hiện ctrl-o trong dịp Giáng sinh vì nó nghe có vẻ hữu ích.
dangph

2
Ah, PSReadLine, đây có vẻ như câu trả lời của tôi, bạn nên đăng nó dưới dạng câu trả lời. Nó không có Co nhưng nó có Cr là quan trọng nhất. Nó cũng có các tinh chỉnh hoàn thành tab mà tôi muốn trong phần thưởng.
v.oddou

2
Tác giả PSReadline tại đây - @ v.oddou - Ctrl + K nên được liên kết với KillLine trong chế độ Emacs. Ctrl + R nên hoạt động w / hoặc w / o gõ một cái gì đó trước. Tôi rất vui khi thêm Ctrl + O - thoải mái mở một vấn đề trên github.
Jason Shirk

Câu trả lời:


15

Nhập các chữ cái đầu tiên của lệnh và nhấn F8.

Ngoài ra, bạn có thể nhấn F7và gõ các chữ cái đầu tiên.

Thêm chi tiết: http://technet.microsoft.com/en-us/magazine/ff678293.aspx


F7 không làm gì cả ...
Daniel K.

Bạn có thể cung cấp thêm thông tin? Có thể nó có thể hữu ích cho những người khác. Phiên bản nào của Powershell và phiên bản Windows nào? Powershell mặc định là khá hạn chế. Tốt hơn là sử dụng MobaXterm hoặc ConEmuMaximus 5 để có được UX tốt hơn
georgik

@CatBoss F7 hoạt động trong cmd
phuclv

1
@ LưuViênPhúc thì câu trả lời cần phải nói như vậy, vì câu hỏi là về Powershell ....
Daniel K.

Xem câu trả lời dưới đây - đừng lãng phí thời gian của bạn với F8 nếu bạn đang ở trên powershell 5+
Nicholas DiP Square 17/10/18

6

WMF 5.0 RTM , bao gồm Windows PowerShell 5 , hiện hỗ trợ tính năng tìm kiếm lệnh đảo ngược tương tự của bash CTRL+R. Tôi đã sử dụng điều này trong Windows 10 Anniversary Edition và bộ nhớ cơ bash của tôi rất hạnh phúc.

Sự hỗ trợ thực sự đến từ mô-đun PowerRell PSReadLine mà tôi thấy đã được đề cập trong một số ý kiến ​​của câu hỏi. Điều tốt là PSReadLine hiện dường như được bao gồm trong bản cài đặt WMF 5.0 cơ bản , ít nhất là trên Windows 10.

Nếu bạn đang chạy PowerShell 3 trở lên, bạn cũng có thể cài đặt PSReadLine và nhận tính năng tìm kiếm lịch sử.

Lưu ý: Tôi chưa tìm ra cách để điều này hoạt động trong ISE khi CTRL+Rđược ánh xạ tới một thứ khác (Hiển thị / Ẩn tập lệnh).


4

Để thao tác lịch sử của bạn, bạn có thể sử dụng các lệnh ghép ngắn lịch sử, liệt kê chúng theo lệnh này:

Get-Command *-history

Tìm kiếm lịch sử của bạn được thực hiện như thế này, vui lòng thực hiện một chức năng để rút ngắn nó:

Get-history | Select-String "command"

function f ($Name) { Get-history | Select-String $name }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.