Modul ini menggantikan pengalaman pengeditan baris perintah PowerShell untuk versi 3 dan lebih tinggi. Ini menyediakan:
Pengalaman "di luar kotak" dimaksudkan agar sangat familiar bagi pengguna PowerShell - tidak perlu mempelajari penekanan tombol baru.
Beberapa sumber bagus tentang PSReadLine
:
PSReadLine
.PSReadLine
.PSReadLine
sesuai keinginan Anda. Ada beberapa cara untuk menginstal PSReadLine
.
Anda memerlukan PowerShellGet
versi 1.6.0
atau lebih tinggi untuk menginstal PSReadLine
versi prarilis terbaru.
Windows PowerShell 5.1 mengirimkan PowerShellGet
versi lama yang tidak mendukung pemasangan modul prarilis, sehingga pengguna Windows PowerShell perlu menginstal PowerShellGet
terbaru (jika belum) dengan menjalankan perintah berikut dari sesi Windows PowerShell yang ditinggikan:
Install-Module - Name PowerShellGet - Force
Exit
Setelah menginstal PowerShellGet
, Anda bisa mendapatkan PSReadLine
versi prarilis terbaru dengan menjalankannya
Install-Module PSReadLine - AllowPrerelease - Force
Jika Anda hanya ingin mendapatkan versi stabil terbaru, jalankan:
Install-Module PSReadLine
[!CATATAN] Versi prarilis akan memiliki fitur yang lebih baru dan perbaikan bug, namun mungkin juga menimbulkan masalah baru.
Jika Anda menggunakan Windows PowerShell di Windows 10 atau menggunakan PowerShell 6+, PSReadLine
sudah diinstal. Windows PowerShell pada Windows 10 terbaru memiliki PSReadLine
versi 2.0.0-beta2
. Versi PowerShell 6+ memiliki versi PSReadLine
prarilis yang lebih baru.
Dengan rilis pratinjau PowerShellGet untuk PowerShell V3/V4, unduhan dari GitHub tidak digunakan lagi. Kami tidak bermaksud memperbarui rilis di GitHub, dan mungkin akan menghapus rilis tersebut seluruhnya dari GitHub suatu saat nanti.
Jika Anda menggunakan versi Windows PowerShell V5 atau V5.1, atau menggunakan versi PowerShell 6+, Anda dapat melanjutkan dan melewati bagian ini.
Jika tidak, Anda perlu mengedit profil Anda untuk mengimpor modul. Ada dua file profil yang umum digunakan dan instruksinya sedikit berbeda untuk masing-masing file. File C:Users[User]DocumentsWindowsPowerShellprofile.ps1
digunakan untuk semua host (misalnya ISE
dan powershell.exe
). Jika Anda sudah memiliki file ini, Anda harus menambahkan yang berikut ini:
if ( $host .Name -eq ' ConsoleHost ' )
{
Import-Module PSReadLine
}
Alternatifnya, file C:Users[User]DocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1
hanya untuk powershell.exe
. Dengan menggunakan file ini, Anda cukup menambahkan:
Import-Module PSReadLine
Apa pun kasusnya, Anda dapat membuat file yang sesuai jika Anda belum memilikinya.
Saat menjalankan salah satu perintah yang disarankan di bawah ini, pastikan untuk keluar dari semua instance powershell.exe
, pwsh.exe
atau pwsh
, termasuk yang dibuka di terminal VSCode
.
Lalu, untuk memastikan PSReadLine
tidak dimuat:
cmd.exe
, powershell_ise.exe
, atau melalui pintasan Win+R
;bash
atau zsh
). Jika Anda menggunakan versi PSReadLine
yang disertakan dengan Windows PowerShell, Anda perlu menjalankan: powershell -noprofile -command "Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease"
. Catatan: Anda harus memastikan PowershellGet diperbarui sebelum menjalankan perintah ini.
Jika Anda menggunakan versi PSReadLine
yang disertakan dengan versi PowerShell 6+, Anda perlu menjalankan: <path-to-pwsh-executable> -noprofile -command "Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease"
.
Jika Anda telah menginstal PSReadLine
sendiri dari Galeri PowerShell, Anda cukup menjalankan: powershell -noprofile -command "Update-Module PSReadLine -AllowPrerelease"
atau <path-to-pwsh-executable> -noprofile -command "Update-Module PSReadLine -AllowPrerelease"
, bergantung pada versi PowerShell yang Anda gunakan.
Jika Anda mendapatkan kesalahan seperti:
Remove-Item : Cannot remove item
C:Users{yourName}DocumentsWindowsPowerShellModulesPSReadLineMicrosoft.PowerShell.PSReadLine.dll: Access to the path
'C:Users{yourName}DocumentsWindowsPowerShellModulesPSReadLineMicrosoft.PowerShell.PSReadLine.dll' is denied.
atau peringatan seperti:
WARNING: The version '2.0.0' of module 'PSReadLine' is currently in use. Retry the operation after closing the applications.
Maka Anda tidak menghentikan semua proses yang memuat PSReadLine
.
Untuk mulai menggunakan, cukup impor modul:
Import-Module PSReadLine
Untuk menggunakan pengikatan kunci Emacs, Anda dapat menggunakan:
Set-PSReadLineOption - EditMode Emacs
Untuk melihat pengikatan kunci saat ini:
Get-PSReadLineKeyHandler
Ada banyak opsi konfigurasi, lihat opsi di Set-PSReadLineOption
. PSReadLine
memiliki bantuan untuk cmdletnya serta topik about_PSReadLine
- lihat topik tersebut untuk bantuan lebih detail.
Untuk mengatur pengikatan kunci khusus Anda sendiri, gunakan cmdlet Set-PSReadLineKeyHandler
. Misalnya, untuk pengalaman sejarah yang lebih baik, cobalah:
Set-PSReadLineKeyHandler - Key UpArrow - Function HistorySearchBackward
Set-PSReadLineKeyHandler - Key DownArrow - Function HistorySearchForward
Dengan pengikatan ini, panah atas/panah bawah akan berfungsi seperti PowerShell/cmd jika baris perintah saat ini kosong. Jika Anda telah memasukkan beberapa teks, ia akan mencari riwayat perintah yang dimulai dengan teks yang dimasukkan saat ini.
Untuk mengaktifkan penyelesaian gaya bash tanpa menggunakan mode Emacs, Anda dapat menggunakan:
Set-PSReadLineKeyHandler - Key Tab - Function Complete
Berikut adalah contoh yang lebih menarik tentang apa yang mungkin terjadi:
Set-PSReadLineKeyHandler - Chord ' " ' , " ' " `
- BriefDescription SmartInsertQuote `
- LongDescription " Insert paired quotes if not already on a quote " `
- ScriptBlock {
param ( $key , $arg )
$line = $null
$cursor = $null
[ Microsoft.PowerShell.PSConsoleReadLine ]::GetBufferState([ ref ] $line , [ ref ] $cursor )
if ( $line .Length -gt $cursor -and $line [ $cursor ] -eq $key .KeyChar ) {
# Just move the cursor
[ Microsoft.PowerShell.PSConsoleReadLine ]::SetCursorPosition( $cursor + 1 )
}
else {
# Insert matching quotes, move cursor to be in between the quotes
[ Microsoft.PowerShell.PSConsoleReadLine ]::Insert( " $ ( $key .KeyChar ) " * 2 )
[ Microsoft.PowerShell.PSConsoleReadLine ]::GetBufferState([ ref ] $line , [ ref ] $cursor )
[ Microsoft.PowerShell.PSConsoleReadLine ]::SetCursorPosition( $cursor - 1 )
}
}
Dalam contoh ini, saat Anda mengetikkan tanda kutip tunggal atau tanda kutip ganda, ada dua hal yang bisa terjadi. Jika karakter yang mengikuti kursor bukan merupakan tanda kutip, maka pasangan tanda kutip yang cocok disisipkan dan kursor ditempatkan di dalam tanda kutip yang cocok. Jika karakter yang mengikuti kursor adalah tanda kutip, kursor cukup dipindahkan melewati tanda kutip tanpa menyisipkan apa pun. Jika Anda menggunakan Resharper atau editor cerdas lainnya, pengalaman ini pasti familiar.
Perhatikan bahwa dengan handler yang ditulis dengan cara ini, ia menangani Undo dengan benar - kedua tanda kutip akan dibatalkan dengan satu undo.
Contoh file profil memiliki banyak contoh bagus untuk dilihat. File ini disertakan ketika PSReadLine
diinstal.
Lihat metode publik [Microsoft.PowerShell.PSConsoleReadLine]
untuk melihat fungsionalitas bawaan lainnya yang dapat Anda modifikasi.
Jika Anda ingin mengubah baris perintah dengan cara yang tidak diterapkan pada pengikatan kunci kustom Anda, Anda dapat menggunakan metode:
[ Microsoft.PowerShell.PSConsoleReadLine ]::GetBufferState
[ Microsoft.PowerShell.PSConsoleReadLine ]::Insert
[ Microsoft.PowerShell.PSConsoleReadLine ]::Replace
[ Microsoft.PowerShell.PSConsoleReadLine ]::SetCursorPosition
Silakan lihat Panduan Kontribusi untuk mengetahui cara mengembangkan dan berkontribusi.
Untuk membangun PSReadLine
di Windows, Linux, atau macOS, Anda harus menginstal yang berikut ini:
InvokeBuild
dan platyPS
Skrip build build.ps1
dapat digunakan untuk melakukan bootstrap, membangun, dan menguji proyek.
./build.ps1 -Bootstrap
./build.ps1 -Configuration Debug -Framework net462
./build.ps1 -Configuration Debug -Framework netcoreapp2.1
./build.ps1 -Test -Configuration Debug -Framework net462
./build.ps1 -Test -Configuration Debug -Framework netcoreapp2.1
Setelah dibuat, artefak yang dihasilkan dapat ditemukan di <your-local-repo-root>/bin/Debug
. Untuk mengisolasi modul yang Anda impor ke modul yang dibuat secara lokal, pastikan untuk menjalankan pwsh -NonInteractive -NoProfile
agar tidak secara otomatis memuat modul PSReadLine default yang diinstal. Kemudian, muat modul PSReadLine yang dibuat secara lokal dengan Import-Module <your-local-repo-root>/bin/Debug/PSReadLine/PSReadLine.psd1
.
Log perubahan tersedia di sini.
PSReadLine dilisensikan di bawah Lisensi 2-Klausul BSD.
Silakan lihat Kode Etik kami sebelum berpartisipasi dalam proyek ini.
Untuk masalah keamanan apa pun, silakan lihat Kebijakan Keamanan kami.