Setara dengan Powershell dari Ctrl + R?

13

Dalam bash saya bisa melakukan Ctrl+ Rdan mulai mengetikkan perintah untuk mencari riwayat saya.

Bagaimana saya melakukannya di PowerShell?

Apakah ada cara untuk mengikat kunci ke sesuatu seperti?

function GH($str) {get-history | select-string $str}

Tapi saya perlu membaca kembali string untuk setiap input char atau dihapus untuk mencocokkan perintah perintah seperti yang dilakukan Ctrl+ R.

Apakah ini mungkin?

red888
sumber

Jawaban:

11

Anda dapat memperbaikinya dengan mengadopsi modul PSReadLine .

Lihat artikel di Hey, Scripting Guy! blog mengenai implementasi readline bash yang terinspirasi untuk PowerShell ini.

Secara khusus, penggunaan Ctrl+ Alt+ ( Shift) +? untuk menampilkan semua ikatan kunci.

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.0.10240.16384
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.42000
BuildVersion                   10.0.10240.16384
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3

Ctrl+R

PS C:\> Get-Module -ListAvailable
bck-i-search: mo_

Ctrl+ Alt+ ( Shift) +S

Key                  Function                 Description
---                  --------                 -----------
Ctrl+r               ReverseSearchHistory     Search history backwards interactively
Ctrl+s               ForwardSearchHistory     Search history forward interactively

Singkatnya: instal modul ini dengan tangan atau tingkatkan ke Windows PowerShell v5.

MM
sumber
5

Ketik istilah pencarian Anda dan kemudian tekan F8, ini akan mencari riwayat perintah Anda.

Ada daftar pintasan PowerShell yang sangat berguna di sini .

Sam Cogan
sumber
Sudahkah Anda mencobanya sendiri? Itu tidak pernah benar-benar bekerja untuk saya atau hanya separuh waktu. Sebagai contoh, saya mengetik banyak perintah get- <wh whatever>. Kemudian ketik get- <F8> dan itu hanya menggilir satu atau dua perintah acak dari riwayat saya? Saya tidak tahu apa yang dilakukannya. Misalnya saya mengetik get-childitem dan langsung menjalankannya setelah mengetikkan get-c <f8> dan saya tidak mendapatkan apa-apa. Mungkin sesi saya kacau?
red888
Bekerja 100% dari waktu bagi saya, ini dengan WMF 5 diinstal
Sam Cogan
5

Saya tidak tahu kapan ini ditambahkan, tetapi pada Windows 10 saya yang tidak dikustomisasi, diperbarui, terpasang. Tekan ctrl + r untuk pencarian riwayat terbalik, ini bekerja dengan baik.

masukkan deskripsi gambar di sini

skrebbel
sumber
Saya juga mengerjakan win10. Ctrl + R bekerja di PowerShell, tetapi tidak bekerja di jendela cmd.
dudu
Tentu, tetapi mengapa Anda harus menggunakan cmd.exe ??
Raúl Salinas-Monteagudo
0

Ada juga pencarian grafis di bawah tombol F7. Ketika ditekan itu akan menampilkan popup yang dapat Anda gulir untuk mencari perintah yang dieksekusi sebelumnya. Menekan enter saat kursor mengarahkan kursor akan mengeksekusinya kembali.

termil0r
sumber
0

Anda juga dapat memulai perintah dengan meletakkan karakter # di depan teks pencarian parsial dari perintah yang Anda cari, lalu tekan ketuk sesudahnya (beberapa kali jika perlu) untuk mencari melalui riwayat sesi.

Tolga
sumber