เทียบเท่ากับ Ctrl-r ของ bash ใน PowerShell


19

ไม่มีใครรู้วิธีที่จะมีคุณสมบัติการค้นหาคำสั่งย้อนหลังของ bash [Ctrl-r](และ[Ctrl-o]) ที่มีประโยชน์ดังนั้นใน windows powershell?

C-rเป็นการarrow upจัดการประวัติที่มีประสิทธิภาพยิ่งขึ้นมันเหมือนกับ emacs C-rที่ค้นหาย้อนหลังภายในคำสั่งที่คุณป้อนก่อนหน้านี้ จากนั้นC-oดำเนินการคำสั่งนั้นและวางลงบนบรรทัดในคำสั่งถัดไปทันทีหลังจากนั้น เพื่อให้คุณสามารถทำซ้ำชุดคำสั่งได้อย่างมีประสิทธิภาพ นอกจากนี้ยังค้นหาประวัติที่บันทึกไว้ไม่ใช่ประวัติเซสชัน ( ~/.bash_historyไฟล์) ซึ่งมีประโยชน์อนันต์

ขอบคุณ

ps: เป็นโบนัสความสมบูรณ์ของแท็บที่ไม่ทำงานตามรอบจะน่ากลัวเช่นกัน


ctrl O ทำอะไรที่คุณต้องการทำซ้ำ ข้อมูลเพิ่มเติมเราดีเสมอ ...
Austin T French

ใช่แก้ไขคำถาม :)
v.oddou

2
ฉันไม่เชื่อว่าคุณสมบัตินี้ได้รับการสนับสนุน PowerShell 3 มีตะขอที่เรียกPSConsoleHostReadlineว่าอาจมีประโยชน์ จุดเริ่มต้นที่ดีคือการใช้PSReadLineซึ่งใช้ตะขอนั้น PSReadLine ไม่สนับสนุน ctrl-o แต่รองรับ ctrl-r (สมมุติว่ามันไม่ได้ผลสำหรับฉัน) ฉันอาจได้ดูการใช้ ctrl-o ในช่วงคริสต์มาสเพราะฟังดูมีประโยชน์
dangph

2
อ๋อ PSReadLine ดูเหมือนว่าคำตอบของฉันคุณควรโพสต์เป็นคำตอบ มันไม่มี Co แต่มันมี Cr ซึ่งสำคัญที่สุด นอกจากนี้ยังมีการปรับแต่งความสมบูรณ์ของแท็บที่ฉันต้องการด้วยโบนัส
v.oddou

2
ผู้เขียน PSReadline ที่นี่ - @ v.oddou - Ctrl + K ควรถูกผูกไว้กับ KillLine ในโหมด Emacs Ctrl + R ควรทำงานโดยไม่มีการพิมพ์บางอย่างก่อน ฉันยินดีที่จะเพิ่ม Ctrl + O - อย่าลังเลที่จะเปิดปัญหาเกี่ยวกับ Github
Jason Shirk

คำตอบ:


15

F8พิมพ์อักษรตัวแรกของคำสั่งและกด

หรือคุณสามารถกดF7และพิมพ์ตัวอักษรตัวแรก

รายละเอียดเพิ่มเติม: http://technet.microsoft.com/en-us/magazine/ff678293.aspx


F7 ไม่ทำอะไรเลย ...
Daniel K.

คุณสามารถให้ข้อมูลเพิ่มเติมได้หรือไม่ อาจเป็นประโยชน์กับผู้อื่น Powershell รุ่นใดและ Windows รุ่นใด Powershell เริ่มต้นค่อนข้าง จำกัด จะดีกว่าถ้าใช้ MobaXterm หรือ ConEmuMaximus 5 เพื่อให้ดีขึ้น UX
georgik

@CatBoss F7 ทำงานใน cmd
phuclv

1
@ LưuVĩnhPhúcดังนั้นคำตอบจำเป็นต้องพูดเช่นนั้นเพราะคำถามเกี่ยวกับ Powershell ....
Daniel K.

ดูคำตอบด้านล่าง - อย่าเสียเวลากับ F8 ถ้าคุณใช้ PowerShell 5+
Nicholas DiP Piazza

6

WMF 5.0 RTMซึ่งรวมถึงWindows PowerShell 5 , CTRL+Rในขณะนี้สนับสนุนคุณสมบัติการค้นหาคำสั่งเดียวกันย้อนกลับของทุบตี ฉันใช้สิ่งนี้ใน Windows 10 Anniversary Edition และหน่วยความจำกล้ามเนื้อทุบตีของฉันมีความสุขมาก

การสนับสนุนจริงมาจากโมดูล PowerShell PSReadLineที่ฉันเห็นถูกกล่าวถึงในความคิดเห็นของคำถาม สิ่งที่ดีคือตอนนี้ PSReadLine ดูเหมือนจะรวมอยู่ในการติดตั้ง WMF 5.0 พื้นฐานอย่างน้อยก็อยู่ใน Windows 10

หากคุณใช้ PowerShell 3 หรือใหม่กว่าคุณสามารถติดตั้ง PSReadLine ได้เช่นกันและรับคุณสมบัติการค้นหาประวัติ

หมายเหตุ:ฉันไม่ทราบวิธีการทำงานใน ISE CTRL+Rนี้ซึ่งถูกแมปกับสิ่งอื่น (แสดง / ซ่อนบานหน้าต่างสคริปต์)


4

เพื่อจัดการประวัติของคุณคุณสามารถใช้ประวัติ cmdlets รายการพวกเขาด้วยคำสั่งนี้:

Get-Command *-history

การค้นหาประวัติของคุณเสร็จสิ้นเช่นนี้อย่าลังเลที่จะทำฟังก์ชั่นเพื่อย่อ:

Get-history | Select-String "command"

function f ($Name) { Get-history | Select-String $name }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.