Setara dengan bash's Ctrl-r di PowerShell

19

apakah ada yang tahu cara untuk memiliki fitur pencarian perintah mundur bash [Ctrl-r](dan [Ctrl-o]) yang sangat berguna, di windows PowerShell?

C-radalah arrow upmanipulasi sejarah yang lebih kuat , seperti emacs C-ryang mencari mundur di dalam perintah yang sebelumnya Anda masukkan. Kemudian C-ojalankan perintah itu dan segera tempatkan pada baris perintah berikutnya setelah itu. Sehingga Anda dapat mengulangi serangkaian perintah yang berlalu secara efisien. Juga terlihat dalam riwayat yang disimpan, bukan riwayat sesi. ( ~/.bash_historyfile). Yang sangat berguna.

Terima kasih.

ps: sebagai bonus, penyelesaian tab tidak bekerja dengan siklus akan sangat mengagumkan juga.

v.oddou
sumber
Apa yang dilakukan ctrl O yang ingin Anda tiru? Info lebih lanjut kami selalu baik ...
Austin T French
Yap, edit pertanyaannya :)
v.oddou
2
Saya tidak percaya bahwa fitur ini didukung. PowerShell 3 memang memiliki kait bernama PSConsoleHostReadlineyang bisa berguna. Tempat yang baik untuk memulai adalah menggunakan PSReadLine , yang menggunakan kait itu. PSReadLine tidak mendukung ctrl-o, tetapi mendukung ctrl-r (seharusnya - itu tidak bekerja untuk saya). Saya mungkin melihat penerapan ctrl-o selama Natal karena memang terdengar bermanfaat.
dangph
2
Ah, PSReadLine, ini sepertinya jawaban saya, Anda harus mempostingnya sebagai jawaban. tidak memiliki Co tetapi memiliki Cr yang paling penting. Ini juga memiliki tweak penyelesaian tab yang saya inginkan dalam bonus.
v.oddou
2
Penulis PSReadline di sini - @ v.oddou - Ctrl + K harus terikat ke KillLine dalam mode Emacs. Ctrl + R harus bekerja tanpa mengetik sesuatu terlebih dahulu. Saya senang menambahkan Ctrl + O - jangan ragu untuk membuka masalah di github.
Jason Shirk

Jawaban:

15

Ketik huruf pertama dari perintah dan tekan F8.

Atau Anda dapat menekan F7dan mengetik huruf pertama.

Lebih detail: http://technet.microsoft.com/en-us/magazine/ff678293.aspx

georgik
sumber
F7 tidak melakukan apa-apa ...
Daniel K.
Bisakah Anda memberikan informasi lebih lanjut? Semoga bisa bermanfaat bagi orang lain. Versi Powershell dan Windows yang mana? Powershell default sangat terbatas. Lebih baik menggunakan MobaXterm atau ConEmuMaximus 5 untuk mendapatkan UX yang lebih baik
georgik
@CatBoss F7 bekerja di cmd
phuclv
1
@ LưuVĩnhPhúc maka jawabannya perlu dikatakan demikian, karena pertanyaannya adalah tentang Powershell ....
Daniel K.
Lihat jawaban di bawah ini - jangan buang waktu Anda dengan F8 jika Anda menggunakan powershell 5+
Nicholas DiPiazza
6

WMF 5.0 RTM , yang mencakup Windows PowerShell 5 , sekarang mendukung fitur pencarian perintah terbalik yang sama dari bash CTRL+R. Saya telah menggunakan ini di Windows 10 Anniversary Edition, dan memori otot bash saya sangat bahagia.

Dukungan sebenarnya berasal dari modul PowerShell PSReadLine yang saya lihat disebutkan dalam beberapa komentar pertanyaan. Hal yang baik adalah bahwa PSReadLine sekarang tampaknya termasuk dalam instalasi dasar WMF 5.0 , setidaknya pada Windows 10.

Jika Anda menjalankan PowerShell 3 atau lebih baru, Anda juga dapat menginstal PSReadLine juga dan mendapatkan fitur pencarian riwayat.

Catatan: Saya belum menemukan cara agar ini berfungsi di ISE sebagaimana CTRL+Rdipetakan ke sesuatu yang lain (Tampilkan / Sembunyikan Panel Skrip).

Lantrix
sumber
4

Untuk memanipulasi riwayat Anda, Anda dapat menggunakan cmdlet riwayat, daftarkan mereka dengan perintah ini:

Get-Command *-history

Pencarian riwayat Anda dilakukan seperti ini, silakan membuat fungsi untuk mempersingkat:

Get-history | Select-String "command"

function f ($Name) { Get-history | Select-String $name }
tidak ada
sumber